<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.4.2 (Python 3.11.10 on linux)" generated="2026-04-25T23:31:38.250961" rpa="false" schemaversion="5">
<suite id="s1" name="controller-akka1.txt" source="/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/1node.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-25T23:31:38.864660" 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-25T23:31:38.860529" elapsed="0.004210"/>
</kw>
<doc>Set suite to not fail fast.</doc>
<status status="PASS" start="2026-04-25T23:31:38.860031" elapsed="0.004798"/>
</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-25T23:31:38.869857" 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-25T23:31:38.866241" elapsed="0.003649"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-04-25T23:31:38.870128" elapsed="0.000021"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:38.870008" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:38.869976" elapsed="0.000229"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:38.870821" 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-25T23:31:38.870364" elapsed="0.000506"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-04-25T23:31:38.871372" level="INFO">${cluster_size} = 1</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or ``default`` if the variable does not exist.</doc>
<status status="PASS" start="2026-04-25T23:31:38.871042" 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-25T23:31:38.871966" elapsed="0.000307"/>
</kw>
<msg time="2026-04-25T23:31:38.872383" level="INFO">${status} = PASS</msg>
<msg time="2026-04-25T23:31:38.872432" level="INFO">${possibly_int_of_members} = 1</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:31:38.871567" elapsed="0.000888"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:31:38.873026" level="INFO">${int_of_members} = 1</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:31:38.872624" elapsed="0.000429"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:31:38.874665" 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-25T23:31:38.874378" elapsed="0.000330"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:31:38.875120" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:31:38.874854" elapsed="0.000293"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:31:38.875635" 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-25T23:31:38.875302" elapsed="0.000361"/>
</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-25T23:31:38.878818" elapsed="0.000237"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:38.879535" level="INFO">${member_ip} = 10.30.171.166</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-25T23:31:38.879203" elapsed="0.000359"/>
</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-25T23:31:38.879718" elapsed="0.000281"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:38.880857" 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-25T23:31:38.880539" elapsed="0.000345"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-25T23:31:38.880931" elapsed="0.000042"/>
</return>
<msg time="2026-04-25T23:31:38.881101" 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-25T23:31:38.880213" elapsed="0.000913"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-25T23:31:38.881800" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.166:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x78ff4b965750&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-25T23:31:38.881341" elapsed="0.000613"/>
</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-25T23:31:38.882107" 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-25T23:31:38.878152" elapsed="0.004206"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-25T23:31:38.877968" elapsed="0.004439"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-04-25T23:31:38.875739" elapsed="0.006701"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:38.883079" level="INFO">${ClusterManagement__member_index_list} = [1]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-25T23:31:38.882598" elapsed="0.000525"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:38.883695" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.166'}</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-25T23:31:38.883277" elapsed="0.000464"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:38.884314" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-25T23:31:38.883892" elapsed="0.000471"/>
</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-25T23:31:38.873799" elapsed="0.010622"/>
</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-25T23:31:38.865877" elapsed="0.018601"/>
</kw>
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-25T23:31:38.884670" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:38.884554" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:38.884534" elapsed="0.000221"/>
</if>
<kw name="Run_Bash_Command_On_List_Or_All" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:31:38.887889" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:31:38.887490" elapsed="0.000427"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:31:38.888378" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:31:38.888067" elapsed="0.000337"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-25T23:31:38.888450" elapsed="0.000031"/>
</return>
<msg time="2026-04-25T23:31:38.888608" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-25T23:31:38.887174" elapsed="0.001459"/>
</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-25T23:31:38.889605" level="INFO">${member_ip} = 10.30.171.166</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:31:38.889342" elapsed="0.000289"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:38.890449" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

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

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

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

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-25T23:31:38.894679" elapsed="0.000482"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:38.896097" level="INFO">Attempting to execute command "iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save" on remote system "10.30.171.166" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:38.895397" elapsed="0.000761"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:38.897237" 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-25T23:31:38.896411" elapsed="0.000925"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-25T23:31:38.899273" level="INFO">Length is 0.</msg>
<msg time="2026-04-25T23:31:38.899443" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-25T23:31:38.898793" elapsed="0.000691"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:38.900082" elapsed="0.000502"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-25T23:31:38.902063" level="INFO">Logging into '10.30.171.166:22' as 'jenkins'.</msg>
<msg time="2026-04-25T23:31:39.230320" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.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 25 23:31:37 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
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-60306-7-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-25T23:31:38.901676" elapsed="0.328797"/>
</kw>
<msg time="2026-04-25T23:31:39.230630" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:38.901235" elapsed="0.329589"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-25T23:31:38.897798" elapsed="0.333174"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-25T23:31:39.231802" level="INFO">Executing command 'iptables -I INPUT -p tcp --dport 8101 -j ACCEPT; iptables-save'.</msg>
<msg time="2026-04-25T23:31:39.244732" level="INFO">Command exited with return code 4.</msg>
<msg time="2026-04-25T23:31:39.245212" level="INFO">${stdout} = </msg>
<msg time="2026-04-25T23:31:39.245526" 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-25T23:31:39.231359" elapsed="0.014422"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-25T23:31:39.246562" elapsed="0.000750"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:39.249603" 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-25T23:31:39.248359" 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-25T23:31:39.250331" elapsed="0.000047"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:39.249986" elapsed="0.000476"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:39.249943" 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-25T23:31:39.251052" elapsed="0.000065"/>
</return>
<status status="PASS" start="2026-04-25T23:31:39.250749" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:39.250721" elapsed="0.000587"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-25T23:31:39.251406" 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-25T23:31:39.256769" 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-25T23:31:39.258346" elapsed="0.000563"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-25T23:31:39.259655" elapsed="0.000356"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:39.251894" elapsed="0.008188"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-25T23:31:38.892373" elapsed="0.367915"/>
</kw>
<msg time="2026-04-25T23:31:39.260346" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:38.891722" elapsed="0.368678"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-25T23:31:38.891231" elapsed="0.369259"/>
</kw>
<msg time="2026-04-25T23:31:39.260533" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:38.890740" elapsed="0.369841"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:39.263151" 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-25T23:31:39.263626" elapsed="0.000170"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-25T23:31:39.263993" 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-25T23:31:39.260885" elapsed="0.003261"/>
</kw>
<msg time="2026-04-25T23:31:39.264237" 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-25T23:31:38.889850" elapsed="0.374411"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:39.264845" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:39.264421" elapsed="0.000468"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-25T23:31:39.264935" 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-25T23:31:38.889003" elapsed="0.376061"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-25T23:31:38.888835" elapsed="0.376268"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-25T23:31:38.888700" elapsed="0.376442"/>
</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-25T23:31:38.884972" elapsed="0.380231"/>
</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-25T23:31:39.265347" elapsed="0.000216"/>
</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-25T23:31:39.278552" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:39.278424" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:39.278404" elapsed="0.000218"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:39.278928" level="INFO">index=None
host=None
alias=None
port=22
timeout=3 seconds
newline=

prompt=None
term_type=vt100
width=80
height=24
path_separator=/
encoding=utf8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-25T23:31:39.279034" 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-25T23:31:39.278782" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:39.279453" level="INFO">{}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:39.279198" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:39.279892" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:39.279635" elapsed="0.000300"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:31:39.280714" 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-25T23:31:39.280428" elapsed="0.000487">Dictionary does not contain key '1'.</status>
</kw>
<msg time="2026-04-25T23:31:39.281029" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-25T23:31:39.281074" 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-25T23:31:39.280079" elapsed="0.001018"/>
</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-25T23:31:39.281384" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:39.281173" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:39.281155" elapsed="0.000333"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:31:39.282229" level="INFO">${ip_address} = 10.30.171.166</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:31:39.281966" elapsed="0.000289"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-25T23:31:39.282302" elapsed="0.000030"/>
</return>
<msg time="2026-04-25T23:31:39.282461" level="INFO">${odl_ip} = 10.30.171.166</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-25T23:31:39.281699" elapsed="0.000787"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>${odl_ip}</arg>
<arg>port=${KARAF_SHELL_PORT}</arg>
<arg>prompt=${KARAF_PROMPT_LOGIN}</arg>
<arg>timeout=${timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-25T23:31:39.282633" elapsed="0.000439"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:39.283341" level="INFO">index=4
host=10.30.171.166
alias=None
port=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-25T23:31:39.283447" level="INFO">${karaf_connection_object} = index=4
host=10.30.171.166
alias=None
port=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-25T23:31:39.283228" 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-25T23:31:39.283609" elapsed="0.003300"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-25T23:31:39.287373" level="INFO">Logging into '10.30.171.166:8101' as 'karaf'.</msg>
<msg time="2026-04-25T23:31:40.166700" 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-25T23:31:39.287068" elapsed="0.879788"/>
</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-25T23:31:40.170171" 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-25T23:31:40.170635" elapsed="0.000193"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-25T23:31:40.170964" 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-25T23:31:40.167941" elapsed="0.003178"/>
</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-25T23:31:40.167242" elapsed="0.003921"/>
</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-25T23:31:39.278145" elapsed="0.893071"/>
</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-25T23:31:39.266310" elapsed="0.904952"/>
</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-25T23:31:39.265947" elapsed="0.905365"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-25T23:31:39.265813" elapsed="0.905539"/>
</iter>
<var>${index}</var>
<value>@{ClusterManagement__member_index_list}</value>
<status status="PASS" start="2026-04-25T23:31:39.265632" elapsed="0.905763"/>
</for>
<arg>http_timeout=${http_timeout}</arg>
<doc>Initialize ClusterManagement. Open ssh karaf connections to each ODL.</doc>
<status status="PASS" start="2026-04-25T23:31:38.865226" elapsed="1.306234"/>
</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-25T23:31:40.174053" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:40.173930" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:40.173902" elapsed="0.000226"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-25T23:31:40.178642" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:40.178538" elapsed="0.000164"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:40.178520" elapsed="0.000205"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:31:40.179650" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:31:40.179260" elapsed="0.000416"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:31:40.180137" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:31:40.179846" elapsed="0.000316"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-25T23:31:40.180206" elapsed="0.000036"/>
</return>
<msg time="2026-04-25T23:31:40.180365" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-25T23:31:40.178939" elapsed="0.001450"/>
</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-25T23:31:40.185802" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:40.185676" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:40.185657" 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-25T23:31:40.186972" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:40.186866" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:40.186848" elapsed="0.000191"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:31:40.187593" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:31:40.187169" elapsed="0.000450"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:40.188126" level="INFO">${current_connection_index} = None</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:40.187842" elapsed="0.000309"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-25T23:31:40.278591" 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-25T23:31:40.188723" elapsed="0.090044"/>
</kw>
<msg time="2026-04-25T23:31:40.278911" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-25T23:31:40.278957" 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-25T23:31:40.188299" elapsed="0.090695"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-25T23:31:40.380591" level="INFO">"o "l "l "e "r "- "c "s "i "t "- "1 "n "o "d "e "- "a "k "k "a "1 "- "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 "/ "a "k "k "a "_ "u "p "g "r "a "d "e "/ "1 "[78Cn "[A[78Co
 "d "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-25T23:31:40.279564" elapsed="0.101348"/>
</kw>
<msg time="2026-04-25T23:31:40.381146" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-25T23:31:40.381196" level="INFO">${message_wait} =  "o "l "l "e "r "- "c "s "i "t "- "1 "n "o "d "e "- "a "k "k "a "1 "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:31:40.279152" elapsed="0.102083"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:40.381747" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:40.381384" elapsed="0.000488"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:40.381327" elapsed="0.000576"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:40.382552" level="INFO"> "o "l "l "e "r "- "c "s "i "t "- "1 "n "o "d "e "- "a "k "k "a "1 "- "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 "/ "a "k "k "a "_ "u "p "g "r "a "d "e "/ "1 "[78Cn "[A[78Co
 "d "e ". "r "o "b "o "t "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:40.382046" elapsed="0.000589"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:40.382925" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:40.382718" elapsed="0.000336"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:40.382698" elapsed="0.000382"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-25T23:31:40.383120" 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-25T23:31:40.385182" 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-25T23:31:40.386327" elapsed="0.000330"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-25T23:31:40.387289" 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-25T23:31:40.384170" elapsed="0.003449"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-25T23:31:40.383448" elapsed="0.004342"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-25T23:31:40.186592" elapsed="0.201300"/>
</kw>
<msg time="2026-04-25T23:31:40.387988" level="INFO">${status} = PASS</msg>
<msg time="2026-04-25T23:31:40.388032" level="INFO">${message} =  "o "l "l "e "r "- "c "s "i "t "- "1 "n "o "d "e "- "a "k "k "a "1 "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:31:40.186008" elapsed="0.202061"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-25T23:31:40.388253" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-25T23:31:40.388146" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:40.388127" 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-25T23:31:40.388755" 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-25T23:31:40.389094" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-25T23:31:40.389230" 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-25T23:31:40.185388" elapsed="0.203956"/>
</kw>
<msg time="2026-04-25T23:31:40.389472" level="INFO">${status} = PASS</msg>
<msg time="2026-04-25T23:31:40.389517" level="INFO">${output} =  "o "l "l "e "r "- "c "s "i "t "- "1 "n "o "d "e "- "a "k "k "a "1 "- "a "l "l "- "c "h "r "o "m "i "u "m "/ "t "e "s "t ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:31:40.180806" elapsed="0.208748"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:40.389905" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:40.389630" elapsed="0.000329"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:40.389613" elapsed="0.000368"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-25T23:31:40.180650" elapsed="0.209355"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-25T23:31:40.180450" elapsed="0.209595"/>
</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-25T23:31:40.178254" elapsed="0.211850"/>
</kw>
<doc>Log suite name to karaf log, useful in suite setup.</doc>
<status status="PASS" start="2026-04-25T23:31:40.172058" elapsed="0.218102"/>
</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-25T23:31:40.171610" elapsed="0.218593"/>
</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-25T23:31:38.859651" elapsed="1.530604"/>
</kw>
<kw name="Create_Default_Session" owner="TemplatedRequests">
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-25T23:31:40.394864" level="INFO">Creating Session using : alias=default, url=http://10.30.171.166:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x78ff4b964c10&gt;, timeout=5, proxies=None, verify=False,                     debug=0 </msg>
<arg>default</arg>
<arg>url=${url}</arg>
<arg>auth=${auth}</arg>
<arg>timeout=${timeout}</arg>
<arg>max_retries=${max_retries}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-25T23:31:40.394411" elapsed="0.000619"/>
</kw>
<doc>Create "default" session to ${url} with authentication and connection parameters.
This Keyword is in this Resource only so that user do not need to call RequestsLibrary directly.</doc>
<status status="PASS" start="2026-04-25T23:31:40.393990" elapsed="0.001113"/>
</kw>
<kw name="Open_Connection_To_ODL_System" owner="SSHKeywords">
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:40.399754" level="INFO">${odl_connection} = 7</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-25T23:31:40.399363" elapsed="0.000418"/>
</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-25T23:31:40.401426" level="INFO">Length is 0.</msg>
<msg time="2026-04-25T23:31:40.401511" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-25T23:31:40.401086" 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-25T23:31:40.401694" elapsed="0.000319"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-25T23:31:40.402841" level="INFO">Logging into '10.30.171.166:22' as 'jenkins'.</msg>
<msg time="2026-04-25T23:31:40.721774" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.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 25 23:31:37 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check 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 25 23:31:39 2026 from 10.30.171.101
[?2004h[jenkins@releng-60306-7-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-25T23:31:40.402509" elapsed="0.319555"/>
</kw>
<msg time="2026-04-25T23:31:40.722229" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:40.402169" elapsed="0.320211"/>
</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-25T23:31:40.400650" elapsed="0.321944"/>
</kw>
<msg time="2026-04-25T23:31:40.722739" 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-25T23:31:40.400266" elapsed="0.322576"/>
</kw>
<doc>Call Flexible SSH Login, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-25T23:31:40.399950" elapsed="0.323056"/>
</kw>
<return>
<value>${odl_connection}</value>
<status status="PASS" start="2026-04-25T23:31:40.723111" elapsed="0.000080"/>
</return>
<msg time="2026-04-25T23:31:40.723527" level="INFO">${connection} = 7</msg>
<var>${connection}</var>
<doc>Open a connection to the ODL system at ${ip_address} and return its identifier.</doc>
<status status="PASS" start="2026-04-25T23:31:40.399074" elapsed="0.324508"/>
</kw>
<kw name="Put File" owner="SSHLibrary">
<msg time="2026-04-25T23:31:40.734413" level="INFO">[chan 1] Opened sftp connection (server version 3)</msg>
<msg time="2026-04-25T23:31:40.742367" level="INFO">'/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../../tools/odl-mdsal-clustering-tests/replace_cars.py' -&gt; '/home/jenkins//replace_cars.py'</msg>
<arg>/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../../tools/odl-mdsal-clustering-tests/${PYTHON_UTILITY_FILENAME}</arg>
<doc>Uploads file(s) from the local machine to the remote machine.</doc>
<status status="PASS" start="2026-04-25T23:31:40.724146" elapsed="0.018356"/>
</kw>
<doc>Activate dependency Resources, create SSH connection, copy Python utility.</doc>
<status status="PASS" start="2026-04-25T23:31:38.859248" elapsed="1.883484"/>
</kw>
<test id="s1-t1" name="Select_Latest_Previous_Release_If_Not_Specified" line="71">
<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-25T23:31:40.748137" elapsed="0.000348"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-25T23:31:40.747777" elapsed="0.000787"/>
</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-25T23:31:40.750045" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:40.749866" elapsed="0.000245"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:40.749833" elapsed="0.000310"/>
</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-25T23:31:40.755207" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:40.755096" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:40.755073" elapsed="0.000203"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:31:40.756292" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:31:40.755882" elapsed="0.000437"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:31:40.756790" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:31:40.756467" elapsed="0.000349"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-25T23:31:40.756861" elapsed="0.000032"/>
</return>
<msg time="2026-04-25T23:31:40.757017" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-25T23:31:40.755504" elapsed="0.001537"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-25T23:31:40.762326" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:40.762214" elapsed="0.000158"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:40.762196" 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-25T23:31:40.763477" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:40.763365" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:40.763347" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:31:40.763984" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:31:40.763676" elapsed="0.000334"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:40.764349" level="INFO">${current_connection_index} = 7</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:40.764154" elapsed="0.000220"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-25T23:31:40.820493" 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 "- "a "k "k "a "1 ". "[78Ct "[A[78Cx</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-25T23:31:40.764866" elapsed="0.055749"/>
</kw>
<msg time="2026-04-25T23:31:40.820766" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-25T23:31:40.820813" 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-25T23:31:40.764524" elapsed="0.056343"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-25T23:31:40.851089" level="INFO">"t ". "S "e "l "e "c "t "_ "L "a "t "e "s "t "_ "P "r "e "v "i "o "u "s "_ "R "e "l "e "a "s "e "_ "I "f "_ "N "o "t "_ "S "p "e "c "i "f "i "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-25T23:31:40.821352" elapsed="0.029863"/>
</kw>
<msg time="2026-04-25T23:31:40.851316" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-25T23:31:40.851360" level="INFO">${message_wait} =  "t ". "S "e "l "e "c "t "_ "L "a "t "e "s "t "_ "P "r "e "v "i "o "u "s "_ "R "e "l "e "a "s "e "_ "I "f "_ "N "o "t "_ ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:31:40.821025" elapsed="0.030371"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:40.851751" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:40.851513" elapsed="0.000296"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:40.851493" elapsed="0.000339"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:40.852239" level="INFO"> "t ". "S "e "l "e "c "t "_ "L "a "t "e "s "t "_ "P "r "e "v "i "o "u "s "_ "R "e "l "e "a "s "e "_ "I "f "_ "N "o "t "_ "S "p "e "c "i "f "i "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-25T23:31:40.851961" elapsed="0.000344"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:40.852572" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:40.852371" elapsed="0.000253"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:40.852353" elapsed="0.000293"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-25T23:31:40.852679" elapsed="0.000045"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:40.854950" elapsed="0.000217"/>
</kw>
<msg time="2026-04-25T23:31:40.855227" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:40.853991" elapsed="0.001395"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:40.855669" elapsed="0.000163"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:40.856087" elapsed="0.000048"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:40.853459" elapsed="0.002816"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-25T23:31:40.852965" elapsed="0.003360"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-25T23:31:40.763048" elapsed="0.093372"/>
</kw>
<msg time="2026-04-25T23:31:40.856512" level="INFO">${status} = PASS</msg>
<msg time="2026-04-25T23:31:40.856555" level="INFO">${message} =  "t ". "S "e "l "e "c "t "_ "L "a "t "e "s "t "_ "P "r "e "v "i "o "u "s "_ "R "e "l "e "a "s "e "_ "I "f "_ "N "o "t "_ ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:31:40.762530" elapsed="0.094061"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-25T23:31:40.856795" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-25T23:31:40.856666" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:40.856647" elapsed="0.000230"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:40.857253" 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-25T23:31:40.857564" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-25T23:31:40.857634" 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-25T23:31:40.761885" elapsed="0.095871"/>
</kw>
<msg time="2026-04-25T23:31:40.857848" level="INFO">${status} = PASS</msg>
<msg time="2026-04-25T23:31:40.857892" level="INFO">${output} =  "t ". "S "e "l "e "c "t "_ "L "a "t "e "s "t "_ "P "r "e "v "i "o "u "s "_ "R "e "l "e "a "s "e "_ "I "f "_ "N "o "t "_ ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:31:40.757425" elapsed="0.100527"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:40.858267" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:40.858034" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:40.858014" elapsed="0.000326"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-25T23:31:40.757291" elapsed="0.101071"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-25T23:31:40.757104" elapsed="0.101291"/>
</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-25T23:31:40.754727" elapsed="0.103720"/>
</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-25T23:31:40.749421" elapsed="0.109093"/>
</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-25T23:31:40.748789" elapsed="0.109773"/>
</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-25T23:31:40.744489" elapsed="0.114126"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:40.862968" level="INFO">${odl_zip_url} = </msg>
<arg>${odl_zip_url}</arg>
<arg>${PREVIOUS_ODL_RELEASE_ZIP_URL}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-25T23:31:40.858827" elapsed="0.004187"/>
</kw>
<kw name="Pass Execution If" owner="BuiltIn">
<arg>'${odl_zip_url}'!=''</arg>
<arg>Bundle url to previous release is provided: ${PREVIOUS_ODL_RELEASE_ZIP_URL}, no need to search in nexus.</arg>
<doc>Conditionally skips rest of the current test, setup, or teardown with PASS status.</doc>
<status status="PASS" start="2026-04-25T23:31:40.863164" elapsed="0.000294"/>
</kw>
<kw name="Get_Latest_ODL_Previous_Stream_Release_URL" owner="NexusKeywords">
<kw name="Get_Latest_ODL_Previous_Stream_Release" owner="NexusKeywords">
<kw name="Get_ODL_Versions_From_Nexus" owner="NexusKeywords">
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-04-25T23:31:40.865158" level="INFO">Creating Session using : alias=nexus, url=https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/integration/karaf, headers={},                     cookies={}, auth=None, timeout=None, proxies=None, verify=True,                     debug=0 </msg>
<arg>nexus</arg>
<arg>${NEXUS_RELEASES_URL}</arg>
<arg>verify=${TRUE}</arg>
<doc>Create Session: create a HTTP session to a server</doc>
<status status="PASS" start="2026-04-25T23:31:40.864951" elapsed="0.000390"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:40.865767" level="INFO">${uri} = maven-metadata.xml</msg>
<var>${uri}</var>
<arg>maven-metadata.xml</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-25T23:31:40.865492" elapsed="0.000301"/>
</kw>
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-25T23:31:40.919123" level="INFO">GET Request : url=https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/integration/karaf/maven-metadata.xml 
 path_url=/content/repositories/opendaylight.release/org/opendaylight/integration/karaf/maven-metadata.xml 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'} 
 body=None 
 </msg>
<msg time="2026-04-25T23:31:40.927384" level="INFO">GET Response : url=https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/integration/karaf/maven-metadata.xml 
 status=200, reason=OK 
 headers={'Server': 'nginx/1.24.0', 'Date': 'Sat, 25 Apr 2026 23:31:40 GMT', 'Content-Type': 'application/xml', 'Content-Length': '2582', 'Connection': 'keep-alive', 'Keep-Alive': 'timeout=5', 'X-Frame-Options': 'SAMEORIGIN', 'X-Content-Type-Options': 'nosniff', 'Accept-Ranges': 'bytes', 'ETag': '"{SHA1{3b815e81665cdf740f2769905da2d3141ce5180a}}"', 'Last-Modified': 'Wed, 22 Apr 2026 07:48:11 GMT', 'Referrer-Policy': 'no-referrer', 'Permissions-Policy': 'camera=(), geolocation=(), microphone=()', 'Content-Security-Policy': "default-src 'none'; script-src 'self' 'unsafe-inline' 'unsafe-eval' www.google-analytics.com; style-src 'self' 'unsafe-inline' fonts.googleapis.com; img-src 'self' https: data:; connect-src 'self' 'unsafe-inline' www.google-analytics.com stats.g.doubleclick.net; frame-src 'self'; font-src 'self' fonts.gstatic.com", 'Strict-Transport-Security': 'max-age=15552000'} 
 body=&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;metadata&gt;
  &lt;groupId&gt;org.opendaylight.integration&lt;/groupId&gt;
  &lt;artifactId&gt;karaf&lt;/artifactId&gt;
  &lt;versioning&gt;
    &lt;latest&gt;0.23.1&lt;/latest&gt;
    &lt;release&gt;0.23.1&lt;/release&gt;
    &lt;versions&gt;
      &lt;version&gt;0.6.0-Carbon&lt;/version&gt;
      &lt;version&gt;0.6.1-Carbon&lt;/version&gt;
      &lt;version&gt;0.7.0&lt;/version&gt;
      &lt;version&gt;0.7.1&lt;/version&gt;
      &lt;version&gt;0.7.2&lt;/version&gt;
      &lt;version&gt;0.7.3&lt;/version&gt;
      &lt;version&gt;0.8.0&lt;/version&gt;
      &lt;version&gt;0.8.1&lt;/version&gt;
      &lt;version&gt;0.8.2&lt;/version&gt;
      &lt;version&gt;0.8.3&lt;/version&gt;
      &lt;version&gt;0.8.4&lt;/version&gt;
      &lt;version&gt;0.9.0&lt;/version&gt;
      &lt;version&gt;0.9.1&lt;/version&gt;
      &lt;version&gt;0.9.2&lt;/version&gt;
      &lt;version&gt;0.9.3&lt;/version&gt;
      &lt;version&gt;0.10.0&lt;/version&gt;
      &lt;version&gt;0.10.1&lt;/version&gt;
      &lt;version&gt;0.10.2&lt;/version&gt;
      &lt;version&gt;0.10.3&lt;/version&gt;
      &lt;version&gt;0.11.0&lt;/version&gt;
      &lt;version&gt;0.11.1&lt;/version&gt;
      &lt;version&gt;0.11.2&lt;/version&gt;
      &lt;version&gt;0.11.3&lt;/version&gt;
      &lt;version&gt;0.11.4&lt;/version&gt;
      &lt;version&gt;0.12.0&lt;/version&gt;
      &lt;version&gt;0.12.1&lt;/version&gt;
      &lt;version&gt;0.12.2&lt;/version&gt;
      &lt;version&gt;0.12.3&lt;/version&gt;
      &lt;version&gt;0.13.0&lt;/version&gt;
      &lt;version&gt;0.13.1&lt;/version&gt;
      &lt;version&gt;0.13.2&lt;/version&gt;
      &lt;version&gt;0.13.3&lt;/version&gt;
      &lt;version&gt;0.13.4&lt;/version&gt;
      &lt;version&gt;0.14.0&lt;/version&gt;
      &lt;version&gt;0.14.1&lt;/version&gt;
      &lt;version&gt;0.14.2&lt;/version&gt;
      &lt;version&gt;0.14.3&lt;/version&gt;
      &lt;version&gt;0.14.4&lt;/version&gt;
      &lt;version&gt;0.15.0&lt;/version&gt;
      &lt;version&gt;0.15.1&lt;/version&gt;
      &lt;version&gt;0.15.2&lt;/version&gt;
      &lt;version&gt;0.15.3&lt;/version&gt;
      &lt;version&gt;0.16.0&lt;/version&gt;
      &lt;version&gt;0.16.1&lt;/version&gt;
      &lt;version&gt;0.16.2&lt;/version&gt;
      &lt;version&gt;0.16.3&lt;/version&gt;
      &lt;version&gt;0.17.0&lt;/version&gt;
      &lt;version&gt;0.17.1&lt;/version&gt;
      &lt;version&gt;0.17.2&lt;/version&gt;
      &lt;version&gt;0.17.3&lt;/version&gt;
      &lt;version&gt;0.18.0&lt;/version&gt;
      &lt;version&gt;0.18.1&lt;/version&gt;
      &lt;version&gt;0.18.2&lt;/version&gt;
      &lt;version&gt;0.18.3&lt;/version&gt;
      &lt;version&gt;0.19.0&lt;/version&gt;
      &lt;version&gt;0.19.1&lt;/version&gt;
      &lt;version&gt;0.19.2&lt;/version&gt;
      &lt;version&gt;0.19.3&lt;/version&gt;
      &lt;version&gt;0.20.0&lt;/version&gt;
      &lt;version&gt;0.20.1&lt;/version&gt;
      &lt;version&gt;0.20.2&lt;/version&gt;
      &lt;version&gt;0.20.3&lt;/version&gt;
      &lt;version&gt;0.21.0&lt;/version&gt;
      &lt;version&gt;0.21.1&lt;/version&gt;
      &lt;version&gt;0.21.2&lt;/version&gt;
      &lt;version&gt;0.21.3&lt;/version&gt;
      &lt;version&gt;0.22.0&lt;/version&gt;
      &lt;version&gt;0.22.1&lt;/version&gt;
      &lt;version&gt;0.22.2&lt;/version&gt;
      &lt;version&gt;0.23.0&lt;/version&gt;
      &lt;version&gt;0.23.1&lt;/version&gt;
    &lt;/versions&gt;
    &lt;lastUpdated&gt;20260422074802&lt;/lastUpdated&gt;
  &lt;/versioning&gt;
&lt;/metadata&gt;
 
 </msg>
<msg time="2026-04-25T23:31:40.927615" level="INFO">${response} = &lt;Response [200]&gt;</msg>
<var>${response}</var>
<arg>nexus</arg>
<arg>url=${uri}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="PASS" start="2026-04-25T23:31:40.865934" elapsed="0.061718"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:40.931579" level="INFO">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;metadata&gt;
  &lt;groupId&gt;org.opendaylight.integration&lt;/groupId&gt;
  &lt;artifactId&gt;karaf&lt;/artifactId&gt;
  &lt;versioning&gt;
    &lt;latest&gt;0.23.1&lt;/latest&gt;
    &lt;release&gt;0.23.1&lt;/release&gt;
    &lt;versions&gt;
      &lt;version&gt;0.6.0-Carbon&lt;/version&gt;
      &lt;version&gt;0.6.1-Carbon&lt;/version&gt;
      &lt;version&gt;0.7.0&lt;/version&gt;
      &lt;version&gt;0.7.1&lt;/version&gt;
      &lt;version&gt;0.7.2&lt;/version&gt;
      &lt;version&gt;0.7.3&lt;/version&gt;
      &lt;version&gt;0.8.0&lt;/version&gt;
      &lt;version&gt;0.8.1&lt;/version&gt;
      &lt;version&gt;0.8.2&lt;/version&gt;
      &lt;version&gt;0.8.3&lt;/version&gt;
      &lt;version&gt;0.8.4&lt;/version&gt;
      &lt;version&gt;0.9.0&lt;/version&gt;
      &lt;version&gt;0.9.1&lt;/version&gt;
      &lt;version&gt;0.9.2&lt;/version&gt;
      &lt;version&gt;0.9.3&lt;/version&gt;
      &lt;version&gt;0.10.0&lt;/version&gt;
      &lt;version&gt;0.10.1&lt;/version&gt;
      &lt;version&gt;0.10.2&lt;/version&gt;
      &lt;version&gt;0.10.3&lt;/version&gt;
      &lt;version&gt;0.11.0&lt;/version&gt;
      &lt;version&gt;0.11.1&lt;/version&gt;
      &lt;version&gt;0.11.2&lt;/version&gt;
      &lt;version&gt;0.11.3&lt;/version&gt;
      &lt;version&gt;0.11.4&lt;/version&gt;
      &lt;version&gt;0.12.0&lt;/version&gt;
      &lt;version&gt;0.12.1&lt;/version&gt;
      &lt;version&gt;0.12.2&lt;/version&gt;
      &lt;version&gt;0.12.3&lt;/version&gt;
      &lt;version&gt;0.13.0&lt;/version&gt;
      &lt;version&gt;0.13.1&lt;/version&gt;
      &lt;version&gt;0.13.2&lt;/version&gt;
      &lt;version&gt;0.13.3&lt;/version&gt;
      &lt;version&gt;0.13.4&lt;/version&gt;
      &lt;version&gt;0.14.0&lt;/version&gt;
      &lt;version&gt;0.14.1&lt;/version&gt;
      &lt;version&gt;0.14.2&lt;/version&gt;
      &lt;version&gt;0.14.3&lt;/version&gt;
      &lt;version&gt;0.14.4&lt;/version&gt;
      &lt;version&gt;0.15.0&lt;/version&gt;
      &lt;version&gt;0.15.1&lt;/version&gt;
      &lt;version&gt;0.15.2&lt;/version&gt;
      &lt;version&gt;0.15.3&lt;/version&gt;
      &lt;version&gt;0.16.0&lt;/version&gt;
      &lt;version&gt;0.16.1&lt;/version&gt;
      &lt;version&gt;0.16.2&lt;/version&gt;
      &lt;version&gt;0.16.3&lt;/version&gt;
      &lt;version&gt;0.17.0&lt;/version&gt;
      &lt;version&gt;0.17.1&lt;/version&gt;
      &lt;version&gt;0.17.2&lt;/version&gt;
      &lt;version&gt;0.17.3&lt;/version&gt;
      &lt;version&gt;0.18.0&lt;/version&gt;
      &lt;version&gt;0.18.1&lt;/version&gt;
      &lt;version&gt;0.18.2&lt;/version&gt;
      &lt;version&gt;0.18.3&lt;/version&gt;
      &lt;version&gt;0.19.0&lt;/version&gt;
      &lt;version&gt;0.19.1&lt;/version&gt;
      &lt;version&gt;0.19.2&lt;/version&gt;
      &lt;version&gt;0.19.3&lt;/version&gt;
      &lt;version&gt;0.20.0&lt;/version&gt;
      &lt;version&gt;0.20.1&lt;/version&gt;
      &lt;version&gt;0.20.2&lt;/version&gt;
      &lt;version&gt;0.20.3&lt;/version&gt;
      &lt;version&gt;0.21.0&lt;/version&gt;
      &lt;version&gt;0.21.1&lt;/version&gt;
      &lt;version&gt;0.21.2&lt;/version&gt;
      &lt;version&gt;0.21.3&lt;/version&gt;
      &lt;version&gt;0.22.0&lt;/version&gt;
      &lt;version&gt;0.22.1&lt;/version&gt;
      &lt;version&gt;0.22.2&lt;/version&gt;
      &lt;version&gt;0.23.0&lt;/version&gt;
      &lt;version&gt;0.23.1&lt;/version&gt;
    &lt;/versions&gt;
    &lt;lastUpdated&gt;20260422074802&lt;/lastUpdated&gt;
  &lt;/versioning&gt;
&lt;/metadata&gt;
</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:40.927962" elapsed="0.003829"/>
</kw>
<kw name="Parse Xml" owner="XML">
<msg time="2026-04-25T23:31:40.935060" level="INFO">${root} = &lt;Element 'metadata' at 0x78ff4a000360&gt;</msg>
<var>${root}</var>
<arg>${response.text}</arg>
<doc>Parses the given XML file or string into an element structure.</doc>
<status status="PASS" start="2026-04-25T23:31:40.932002" elapsed="0.003088"/>
</kw>
<kw name="Get Element" owner="XML">
<msg time="2026-04-25T23:31:40.935565" level="INFO">${element} = &lt;Element 'latest' at 0x78ff4a000590&gt;</msg>
<var>${element}</var>
<arg>${root}</arg>
<arg>versioning/latest</arg>
<doc>Returns an element in the ``source`` matching the ``xpath``.</doc>
<status status="PASS" start="2026-04-25T23:31:40.935239" elapsed="0.000354"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:40.938117" level="INFO">${latest} = 0.23.1</msg>
<var>${latest}</var>
<arg>${element.text}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-25T23:31:40.935773" elapsed="0.002371"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:40.938534" level="INFO">0.23.1</msg>
<arg>${latest}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:40.938292" elapsed="0.000285"/>
</kw>
<kw name="Get Elements" owner="XML">
<msg time="2026-04-25T23:31:40.939142" level="INFO">@{elements} = [ &lt;Element 'version' at 0x78ff4a000770&gt; | &lt;Element 'version' at 0x78ff4a0007c0&gt; | &lt;Element 'version' at 0x78ff4a000810&gt; | &lt;Element 'version' at 0x78ff4a000630&gt; | &lt;Element 'version' at 0x78ff4a000720&gt; ...</msg>
<var>@{elements}</var>
<arg>${root}</arg>
<arg>.//version</arg>
<doc>Returns a list of elements in the ``source`` matching the ``xpath``.</doc>
<status status="PASS" start="2026-04-25T23:31:40.938733" elapsed="0.000439"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:31:40.939553" level="INFO">${versions} = []</msg>
<var>${versions}</var>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:31:40.939317" elapsed="0.000262"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:40.939933" elapsed="0.002346"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a000770&gt;</var>
<status status="PASS" start="2026-04-25T23:31:40.939808" elapsed="0.002511"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:40.942547" elapsed="0.002249"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a0007c0&gt;</var>
<status status="PASS" start="2026-04-25T23:31:40.942410" elapsed="0.002427"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:40.945051" elapsed="0.002188"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a000810&gt;</var>
<status status="PASS" start="2026-04-25T23:31:40.944929" elapsed="0.002349"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:40.947486" elapsed="0.002332"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a000630&gt;</var>
<status status="PASS" start="2026-04-25T23:31:40.947365" elapsed="0.002492"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:40.950076" elapsed="0.002175"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a000720&gt;</var>
<status status="PASS" start="2026-04-25T23:31:40.949943" elapsed="0.002348"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:40.952491" elapsed="0.002193"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a000900&gt;</var>
<status status="PASS" start="2026-04-25T23:31:40.952374" elapsed="0.002362"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:40.954949" elapsed="0.002274"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a000950&gt;</var>
<status status="PASS" start="2026-04-25T23:31:40.954823" elapsed="0.002440"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:40.957465" elapsed="0.002160"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a0009a0&gt;</var>
<status status="PASS" start="2026-04-25T23:31:40.957347" elapsed="0.002317"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:40.959889" elapsed="0.002197"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a0009f0&gt;</var>
<status status="PASS" start="2026-04-25T23:31:40.959765" elapsed="0.002361"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:40.962328" elapsed="0.002234"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a000860&gt;</var>
<status status="PASS" start="2026-04-25T23:31:40.962211" elapsed="0.002390"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:40.964821" elapsed="0.002196"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a0008b0&gt;</var>
<status status="PASS" start="2026-04-25T23:31:40.964688" elapsed="0.002369"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:40.967258" elapsed="0.002192"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a000a40&gt;</var>
<status status="PASS" start="2026-04-25T23:31:40.967140" elapsed="0.002353"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:40.969696" elapsed="0.002175"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a000a90&gt;</var>
<status status="PASS" start="2026-04-25T23:31:40.969576" elapsed="0.002334"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:40.972111" elapsed="0.002205"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a000b80&gt;</var>
<status status="PASS" start="2026-04-25T23:31:40.971993" elapsed="0.002362"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:40.974557" elapsed="0.002187"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a000bd0&gt;</var>
<status status="PASS" start="2026-04-25T23:31:40.974438" elapsed="0.002352"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:40.977048" elapsed="0.002187"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a000ae0&gt;</var>
<status status="PASS" start="2026-04-25T23:31:40.976928" elapsed="0.002348"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:40.979482" elapsed="0.002300"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a000b30&gt;</var>
<status status="PASS" start="2026-04-25T23:31:40.979363" elapsed="0.002460"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:40.982025" elapsed="0.002164"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a000c20&gt;</var>
<status status="PASS" start="2026-04-25T23:31:40.981908" elapsed="0.002321"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:40.984429" elapsed="0.002180"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a000c70&gt;</var>
<status status="PASS" start="2026-04-25T23:31:40.984312" elapsed="0.002336"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:40.986869" elapsed="0.002437"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a000d60&gt;</var>
<status status="PASS" start="2026-04-25T23:31:40.986750" elapsed="0.002597"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:40.989551" elapsed="0.002210"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a000db0&gt;</var>
<status status="PASS" start="2026-04-25T23:31:40.989432" elapsed="0.002368"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:40.992003" elapsed="0.002181"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a000e00&gt;</var>
<status status="PASS" start="2026-04-25T23:31:40.991884" elapsed="0.002339"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:40.994422" elapsed="0.002152"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a000cc0&gt;</var>
<status status="PASS" start="2026-04-25T23:31:40.994305" elapsed="0.002307"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:40.996828" elapsed="0.002182"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a000e50&gt;</var>
<status status="PASS" start="2026-04-25T23:31:40.996698" elapsed="0.002351"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:40.999249" elapsed="0.002159"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a000d10&gt;</var>
<status status="PASS" start="2026-04-25T23:31:40.999132" elapsed="0.002315"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.001646" elapsed="0.002196"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a000ea0&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.001530" elapsed="0.002351"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.004082" elapsed="0.002178"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a000ef0&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.003965" elapsed="0.002341"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.006508" elapsed="0.002165"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a000f90&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.006390" elapsed="0.002337"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.008931" elapsed="0.002175"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a001030&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.008814" elapsed="0.002331"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.011345" elapsed="0.002171"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a000f40&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.011227" elapsed="0.002327"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.013769" elapsed="0.002193"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a000fe0&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.013636" elapsed="0.002364"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.016199" elapsed="0.002162"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a001120&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.016082" elapsed="0.002318"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.018617" elapsed="0.002188"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a001170&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.018482" elapsed="0.002362"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.021045" elapsed="0.002194"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a0011c0&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.020927" elapsed="0.002352"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.023478" elapsed="0.002168"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a001210&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.023361" elapsed="0.002327"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.025907" elapsed="0.002168"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a001260&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.025788" elapsed="0.002357"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.028349" elapsed="0.002175"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a001080&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.028231" elapsed="0.002332"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.030780" elapsed="0.002185"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a0012b0&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.030646" elapsed="0.002359"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.033206" elapsed="0.002259"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a001300&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.033088" elapsed="0.002421"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.035725" elapsed="0.002193"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a0010d0&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.035591" elapsed="0.002367"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.038160" elapsed="0.002204"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a001350&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.038042" elapsed="0.002360"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.040610" elapsed="0.002173"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a0013a0&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.040493" elapsed="0.002329"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.043022" elapsed="0.002189"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a0013f0&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.042905" elapsed="0.002345"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.045450" elapsed="0.002198"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a001440&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.045333" elapsed="0.002354"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.047905" elapsed="0.002163"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a0014e0&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.047786" elapsed="0.002321"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.050308" elapsed="0.002180"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a001530&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.050190" elapsed="0.002336"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.052742" elapsed="0.002241"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a001490&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.052609" elapsed="0.002413"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.055222" elapsed="0.002191"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a0015d0&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.055105" elapsed="0.002348"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.057653" elapsed="0.002189"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a001580&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.057535" elapsed="0.002346"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.060082" elapsed="0.002201"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a001670&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.059964" elapsed="0.002358"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.062527" elapsed="0.002196"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a001710&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.062405" elapsed="0.002358"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.064969" elapsed="0.002150"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a001760&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.064846" elapsed="0.002311"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.067358" elapsed="0.002170"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a001620&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.067240" elapsed="0.002326"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.069782" elapsed="0.002160"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a0017b0&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.069649" elapsed="0.002332"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.072213" elapsed="0.002169"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a0016c0&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.072063" elapsed="0.002358"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.074621" elapsed="0.002181"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a001850&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.074503" elapsed="0.002338"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.077075" elapsed="0.002159"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a0018f0&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.076956" elapsed="0.002317"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.079473" elapsed="0.002325"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a001940&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.079355" elapsed="0.002483"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.082043" elapsed="0.002158"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a001800&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.081923" elapsed="0.002317"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.084460" elapsed="0.002157"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a0018a0&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.084323" elapsed="0.002333"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.086880" elapsed="0.002200"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a001a30&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.086762" elapsed="0.002358"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.089321" elapsed="0.002154"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a001990&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.089203" elapsed="0.002310"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.091728" elapsed="0.002160"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a0019e0&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.091596" elapsed="0.002330"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.094124" elapsed="0.002145"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a001b20&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.094008" elapsed="0.002298"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.096505" elapsed="0.002309"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a001a80&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.096389" elapsed="0.002470"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.099102" elapsed="0.002242"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a001ad0&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.098958" elapsed="0.002428"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.101594" elapsed="0.002182"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a001b70&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.101473" elapsed="0.002342"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.104018" elapsed="0.002184"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a001c10&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.103899" elapsed="0.002342"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.106442" elapsed="0.002147"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a001bc0&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.106324" elapsed="0.002304"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.108847" elapsed="0.002159"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a001c60&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.108727" elapsed="0.002318"/>
</iter>
<iter>
<kw name="Append To List" owner="Collections">
<arg>${versions}</arg>
<arg>${element.text}</arg>
<doc>Adds ``values`` to the end of ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.111246" elapsed="0.002209"/>
</kw>
<var name="${element}">&lt;Element 'version' at 0x78ff4a001d00&gt;</var>
<status status="PASS" start="2026-04-25T23:31:41.111127" elapsed="0.002368"/>
</iter>
<var>${element}</var>
<value>@{elements}</value>
<status status="PASS" start="2026-04-25T23:31:40.939637" elapsed="0.173890"/>
</for>
<kw name="Sort List" owner="Collections">
<arg>${versions}</arg>
<doc>Sorts the given list in place.</doc>
<status status="PASS" start="2026-04-25T23:31:41.113673" elapsed="0.000176"/>
</kw>
<kw name="Log Many" owner="BuiltIn">
<msg time="2026-04-25T23:31:41.114300" level="INFO">0.10.0</msg>
<msg time="2026-04-25T23:31:41.114329" level="INFO">0.10.1</msg>
<msg time="2026-04-25T23:31:41.114350" level="INFO">0.10.2</msg>
<msg time="2026-04-25T23:31:41.114369" level="INFO">0.10.3</msg>
<msg time="2026-04-25T23:31:41.114388" level="INFO">0.11.0</msg>
<msg time="2026-04-25T23:31:41.114406" level="INFO">0.11.1</msg>
<msg time="2026-04-25T23:31:41.114424" level="INFO">0.11.2</msg>
<msg time="2026-04-25T23:31:41.114443" level="INFO">0.11.3</msg>
<msg time="2026-04-25T23:31:41.114461" level="INFO">0.11.4</msg>
<msg time="2026-04-25T23:31:41.114479" level="INFO">0.12.0</msg>
<msg time="2026-04-25T23:31:41.114497" level="INFO">0.12.1</msg>
<msg time="2026-04-25T23:31:41.114515" level="INFO">0.12.2</msg>
<msg time="2026-04-25T23:31:41.114533" level="INFO">0.12.3</msg>
<msg time="2026-04-25T23:31:41.114551" level="INFO">0.13.0</msg>
<msg time="2026-04-25T23:31:41.114569" level="INFO">0.13.1</msg>
<msg time="2026-04-25T23:31:41.114586" level="INFO">0.13.2</msg>
<msg time="2026-04-25T23:31:41.114604" level="INFO">0.13.3</msg>
<msg time="2026-04-25T23:31:41.114622" level="INFO">0.13.4</msg>
<msg time="2026-04-25T23:31:41.114639" level="INFO">0.14.0</msg>
<msg time="2026-04-25T23:31:41.114657" level="INFO">0.14.1</msg>
<msg time="2026-04-25T23:31:41.114674" level="INFO">0.14.2</msg>
<msg time="2026-04-25T23:31:41.114695" level="INFO">0.14.3</msg>
<msg time="2026-04-25T23:31:41.114726" level="INFO">0.14.4</msg>
<msg time="2026-04-25T23:31:41.114745" level="INFO">0.15.0</msg>
<msg time="2026-04-25T23:31:41.114763" level="INFO">0.15.1</msg>
<msg time="2026-04-25T23:31:41.114780" level="INFO">0.15.2</msg>
<msg time="2026-04-25T23:31:41.114798" level="INFO">0.15.3</msg>
<msg time="2026-04-25T23:31:41.114815" level="INFO">0.16.0</msg>
<msg time="2026-04-25T23:31:41.114934" level="INFO">0.16.1</msg>
<msg time="2026-04-25T23:31:41.115011" level="INFO">0.16.2</msg>
<msg time="2026-04-25T23:31:41.115032" level="INFO">0.16.3</msg>
<msg time="2026-04-25T23:31:41.115050" level="INFO">0.17.0</msg>
<msg time="2026-04-25T23:31:41.115068" level="INFO">0.17.1</msg>
<msg time="2026-04-25T23:31:41.115086" level="INFO">0.17.2</msg>
<msg time="2026-04-25T23:31:41.115103" level="INFO">0.17.3</msg>
<msg time="2026-04-25T23:31:41.115120" level="INFO">0.18.0</msg>
<msg time="2026-04-25T23:31:41.115138" level="INFO">0.18.1</msg>
<msg time="2026-04-25T23:31:41.115155" level="INFO">0.18.2</msg>
<msg time="2026-04-25T23:31:41.115173" level="INFO">0.18.3</msg>
<msg time="2026-04-25T23:31:41.115190" level="INFO">0.19.0</msg>
<msg time="2026-04-25T23:31:41.115208" level="INFO">0.19.1</msg>
<msg time="2026-04-25T23:31:41.115225" level="INFO">0.19.2</msg>
<msg time="2026-04-25T23:31:41.115242" level="INFO">0.19.3</msg>
<msg time="2026-04-25T23:31:41.115259" level="INFO">0.20.0</msg>
<msg time="2026-04-25T23:31:41.115277" level="INFO">0.20.1</msg>
<msg time="2026-04-25T23:31:41.115295" level="INFO">0.20.2</msg>
<msg time="2026-04-25T23:31:41.115312" level="INFO">0.20.3</msg>
<msg time="2026-04-25T23:31:41.115329" level="INFO">0.21.0</msg>
<msg time="2026-04-25T23:31:41.115347" level="INFO">0.21.1</msg>
<msg time="2026-04-25T23:31:41.115364" level="INFO">0.21.2</msg>
<msg time="2026-04-25T23:31:41.115382" level="INFO">0.21.3</msg>
<msg time="2026-04-25T23:31:41.115399" level="INFO">0.22.0</msg>
<msg time="2026-04-25T23:31:41.115416" level="INFO">0.22.1</msg>
<msg time="2026-04-25T23:31:41.115434" level="INFO">0.22.2</msg>
<msg time="2026-04-25T23:31:41.115452" level="INFO">0.23.0</msg>
<msg time="2026-04-25T23:31:41.115469" level="INFO">0.23.1</msg>
<msg time="2026-04-25T23:31:41.115487" level="INFO">0.6.0-Carbon</msg>
<msg time="2026-04-25T23:31:41.115505" level="INFO">0.6.1-Carbon</msg>
<msg time="2026-04-25T23:31:41.115522" level="INFO">0.7.0</msg>
<msg time="2026-04-25T23:31:41.115539" level="INFO">0.7.1</msg>
<msg time="2026-04-25T23:31:41.115556" level="INFO">0.7.2</msg>
<msg time="2026-04-25T23:31:41.115573" level="INFO">0.7.3</msg>
<msg time="2026-04-25T23:31:41.115590" level="INFO">0.8.0</msg>
<msg time="2026-04-25T23:31:41.115607" level="INFO">0.8.1</msg>
<msg time="2026-04-25T23:31:41.115625" level="INFO">0.8.2</msg>
<msg time="2026-04-25T23:31:41.115642" level="INFO">0.8.3</msg>
<msg time="2026-04-25T23:31:41.115660" level="INFO">0.8.4</msg>
<msg time="2026-04-25T23:31:41.115678" level="INFO">0.9.0</msg>
<msg time="2026-04-25T23:31:41.115698" level="INFO">0.9.1</msg>
<msg time="2026-04-25T23:31:41.115728" level="INFO">0.9.2</msg>
<msg time="2026-04-25T23:31:41.115747" level="INFO">0.9.3</msg>
<arg>@{versions}</arg>
<doc>Logs the given messages as separate entries using the INFO level.</doc>
<status status="PASS" start="2026-04-25T23:31:41.114001" elapsed="0.001778"/>
</kw>
<return>
<value>${latest}</value>
<value>@{versions}</value>
<status status="PASS" start="2026-04-25T23:31:41.115829" elapsed="0.000044"/>
</return>
<msg time="2026-04-25T23:31:41.116086" level="INFO">${latest} = 0.23.1</msg>
<msg time="2026-04-25T23:31:41.116170" level="INFO">@{versions} = [ 0.10.0 | 0.10.1 | 0.10.2 | 0.10.3 | 0.11.0 | 0.11.1 | 0.11.2 | 0.11.3 | 0.11.4 | 0.12.0 | 0.12.1 | 0.12.2 | 0.12.3 | 0.13.0 | 0.13.1 | 0.13.2 | 0.13.3 | 0.13.4 | 0.14.0 | 0.14.1 | 0.14.2 | 0.14.3 | ...</msg>
<var>${latest}</var>
<var>@{versions}</var>
<doc>Returns name of last release found on nexus and list of all versions.</doc>
<status status="PASS" start="2026-04-25T23:31:40.864657" elapsed="0.251539"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:41.116630" level="FAIL">Dictionary '${Stream_dict}' has no key 'chromium'.</msg>
<var>${current_version}</var>
<arg>${Stream_dict}[${ODL_STREAM}].0</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="FAIL" start="2026-04-25T23:31:41.116347" elapsed="0.000321">Dictionary '${Stream_dict}' has no key 'chromium'.</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${latest_version}</var>
<arg>0.0</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:41.116854" elapsed="0.000023"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Replace String Using Regexp" owner="String">
<var>${version}</var>
<arg>${version}</arg>
<arg>^0\.</arg>
<arg>${EMPTY}</arg>
<doc>Replaces ``pattern`` in the given ``string`` with ``replace_with``.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:41.117121" elapsed="0.000021"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${latest_version}</var>
<arg>${version} &gt; ${latest_version} and ${version} &lt; ${current_version}</arg>
<arg>${version}</arg>
<arg>${latest_version}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:41.117341" elapsed="0.000024"/>
</kw>
<var name="${version}"/>
<status status="NOT RUN" start="2026-04-25T23:31:41.117001" elapsed="0.000419"/>
</iter>
<var>${version}</var>
<value>@{versions}</value>
<status status="NOT RUN" start="2026-04-25T23:31:41.116936" elapsed="0.000509"/>
</for>
<kw name="Set Variable" owner="BuiltIn">
<var>${latest_version}</var>
<arg>0.${latest_version}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:41.117593" elapsed="0.000020"/>
</kw>
<if>
<branch type="IF" condition="'${latest_version}'=='0.0.0'">
<kw name="Fail" owner="BuiltIn">
<arg>Could not find latest previous release for stream ${stream}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:41.117846" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:41.117691" elapsed="0.000207"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:31:41.117671" elapsed="0.000251"/>
</if>
<kw name="Log" owner="BuiltIn">
<arg>${latest_version}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:41.118052" elapsed="0.000021"/>
</kw>
<return>
<value>${latest_version}</value>
<status status="NOT RUN" start="2026-04-25T23:31:41.118113" elapsed="0.000014"/>
</return>
<var>${latest_version}</var>
<arg>${stream}</arg>
<doc>Returns name for last release for previous stream of specified stream.
Note: If specified stream is not found on nexus, then it is taken as new one (not released yet).
So in this case, latest release version is return.</doc>
<status status="FAIL" start="2026-04-25T23:31:40.864217" elapsed="0.254015">Dictionary '${Stream_dict}' has no key 'chromium'.</status>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${url}</var>
<arg>${NEXUS_RELEASES_URL}/${latest_version}/karaf-${latest_version}${format}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:41.118385" elapsed="0.000021"/>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>${url}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:41.118540" elapsed="0.000020"/>
</kw>
<return>
<value>${url}</value>
<status status="NOT RUN" start="2026-04-25T23:31:41.118599" elapsed="0.000014"/>
</return>
<var>${previous_release}</var>
<arg>${ODL_STREAM}</arg>
<doc>Returns URL for last release for previous stream of specified stream. Default format is .zip.</doc>
<status status="FAIL" start="2026-04-25T23:31:40.863677" elapsed="0.255024">Dictionary '${Stream_dict}' has no key 'chromium'.</status>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${odl_zip_url}</arg>
<arg>${previous_release}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:41.118878" 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-25T23:31:41.120379" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:41.119818" elapsed="0.000624"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:41.119801" 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-25T23:31:41.120604" elapsed="0.000346"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:31:41.129898" 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-25T23:31:41.125335" elapsed="0.004592"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-25T23:31:41.130154" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:41.130001" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:41.129983" elapsed="0.000233"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:31:41.130657" 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-25T23:31:41.130350" elapsed="0.000334"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-25T23:31:41.131172" level="INFO">${reference} = controller_akka1_txt_Select_Latest_Previous_Release_If_Not_Specified</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-25T23:31:41.130846" elapsed="0.000352"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-25T23:31:41.131521" level="INFO">${reference} = controller_akka1_txt_select_latest_previous_release_if_not_specified</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-25T23:31:41.131345" elapsed="0.000202"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:41.132053" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_select_latest_previous_release_if_not_specified"
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-25T23:31:41.131690" elapsed="0.000391"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:41.132537" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_select_latest_previous_release_if_not_specified&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-25T23:31:41.132226" elapsed="0.000339"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-25T23:31:41.133162" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_select_latest_previous_release_if_not_specified"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_select_latest_previous_release_if_not_specified&amp;order=bug_status"

Dictionary '${Stream_dict}' has no key 'chromium'.</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-25T23:31:41.132722" elapsed="0.000491"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:41.133654" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_select_latest_previous_release_if_not_specified"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_select_latest_previous_release_if_not_specified&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-25T23:31:41.133354" elapsed="0.000352"/>
</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-25T23:31:41.125045" elapsed="0.008731"/>
</kw>
<status status="PASS" start="2026-04-25T23:31:41.119577" elapsed="0.014250"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-25T23:31:41.119212" elapsed="0.014674"/>
</kw>
<doc>If previous ODL release is not specified, then latest release for previous to current stream is used.
Note: If current stream is not found on nexus, then it is taken as new one (not released yet).
So in this case, latest release version is return.</doc>
<tag>1node</tag>
<tag>carpeople</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-25T23:31:40.742905" elapsed="0.391020">... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_select_latest_previous_release_if_not_specified"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_select_latest_previous_release_if_not_specified&amp;order=bug_status"

Dictionary '${Stream_dict}' has no key 'chromium'.</status>
</test>
<test id="s1-t2" name="Kill_Original_Odl" line="82">
<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-25T23:31:41.137244" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-25T23:31:41.136995" elapsed="0.000510"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-25T23:31:41.138545" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:41.138435" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:41.138417" 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-25T23:31:41.143313" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:41.143207" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:41.143189" elapsed="0.000192"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:31:41.144351" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:31:41.143972" elapsed="0.000406"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:31:41.144836" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:31:41.144527" elapsed="0.000335"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-25T23:31:41.144908" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:31:41.145060" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-25T23:31:41.143595" elapsed="0.001490"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-25T23:31:41.150499" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:41.150385" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:41.150364" 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-25T23:31:41.151636" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:41.151530" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:41.151513" elapsed="0.000194"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:31:41.152149" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.151853" elapsed="0.000322"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:41.152518" level="INFO">${current_connection_index} = 7</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:41.152321" elapsed="0.000223"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-25T23:31:41.207093" 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 "- "a "k "k "a "1 ". "[78Ct "[A[78Cx</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-25T23:31:41.153053" elapsed="0.054325"/>
</kw>
<msg time="2026-04-25T23:31:41.207618" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-25T23:31:41.207779" 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-25T23:31:41.152693" elapsed="0.055173"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-25T23:31:41.223566" level="INFO">"t ". "K "i "l "l "_ "O "r "i "g "i "n "a "l "_ "O "d "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${KARAF_PROMPT}</arg>
<doc>Consumes and returns the server output until a match to ``regexp`` is found.</doc>
<status status="PASS" start="2026-04-25T23:31:41.209135" elapsed="0.014549"/>
</kw>
<msg time="2026-04-25T23:31:41.223804" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-25T23:31:41.223849" level="INFO">${message_wait} =  "t ". "K "i "l "l "_ "O "r "i "g "i "n "a "l "_ "O "d "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                               ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:31:41.208273" elapsed="0.015609"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:41.224173" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:41.223959" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:41.223940" elapsed="0.000310"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:41.224683" level="INFO"> "t ". "K "i "l "l "_ "O "r "i "g "i "n "a "l "_ "O "d "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                                                [?2004hopendaylight-user@root&gt;</msg>
<arg>${message_wait}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:41.224386" elapsed="0.000384"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:41.225041" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:41.224838" elapsed="0.000256"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:41.224820" elapsed="0.000295"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-25T23:31:41.225148" elapsed="0.000032"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:41.227506" elapsed="0.000237"/>
</kw>
<msg time="2026-04-25T23:31:41.227805" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:41.226424" elapsed="0.001543"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:41.228297" elapsed="0.000048"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:41.228624" elapsed="0.000048"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:41.225926" elapsed="0.002956"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-25T23:31:41.225413" elapsed="0.003520"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-25T23:31:41.151236" elapsed="0.077793"/>
</kw>
<msg time="2026-04-25T23:31:41.229121" level="INFO">${status} = PASS</msg>
<msg time="2026-04-25T23:31:41.229164" level="INFO">${message} =  "t ". "K "i "l "l "_ "O "r "i "g "i "n "a "l "_ "O "d "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                               ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:31:41.150729" elapsed="0.078470"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-25T23:31:41.229382" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-25T23:31:41.229275" elapsed="0.000166"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:41.229256" 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-25T23:31:41.229871" 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-25T23:31:41.230195" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-25T23:31:41.230268" 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-25T23:31:41.150019" elapsed="0.080355"/>
</kw>
<msg time="2026-04-25T23:31:41.230466" level="INFO">${status} = PASS</msg>
<msg time="2026-04-25T23:31:41.230510" level="INFO">${output} =  "t ". "K "i "l "l "_ "O "r "i "g "i "n "a "l "_ "O "d "l "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                                               ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:31:41.145446" elapsed="0.085102"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:41.230879" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:41.230625" elapsed="0.000307"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:41.230608" elapsed="0.000347"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-25T23:31:41.145316" elapsed="0.085661"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-25T23:31:41.145143" elapsed="0.085867"/>
</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-25T23:31:41.142853" elapsed="0.088213"/>
</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-25T23:31:41.138141" elapsed="0.092979"/>
</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-25T23:31:41.137644" elapsed="0.093525"/>
</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-25T23:31:41.134953" elapsed="0.096270"/>
</kw>
<kw name="Kill_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-25T23:31:41.236503" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:31:41.236121" elapsed="0.000409"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:31:41.237059" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:31:41.236684" elapsed="0.000402"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-25T23:31:41.237132" elapsed="0.000030"/>
</return>
<msg time="2026-04-25T23:31:41.237290" level="INFO">${kill_index_list} = [1]</msg>
<var>${kill_index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-25T23:31:41.235754" elapsed="0.001560"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:31:41.238323" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:31:41.237908" elapsed="0.000442"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:31:41.238858" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:31:41.238538" elapsed="0.000346"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-25T23:31:41.238931" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:31:41.239086" level="INFO">${index_list} = [1]</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-25T23:31:41.237518" elapsed="0.001592"/>
</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-25T23:31:41.240542" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:31:41.240154" elapsed="0.000414"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:31:41.241056" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:31:41.240735" elapsed="0.000347"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-25T23:31:41.241129" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:31:41.241283" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-25T23:31:41.239794" elapsed="0.001514"/>
</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-25T23:31:41.242356" level="INFO">${member_ip} = 10.30.171.166</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.242088" elapsed="0.000294"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:41.243137" level="INFO">index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-25T23:31:41.243239" level="INFO">${current_connection} = index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-25T23:31:41.243015" elapsed="0.000250"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:41.245997" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:41.245732" elapsed="0.000322"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:41.245551" elapsed="0.000527"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:41.246329" level="INFO">index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-25T23:31:41.246428" level="INFO">${current_ssh_connection} = index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-25T23:31:41.246220" elapsed="0.000235"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:41.246989" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | awk '{print "kill -9 " $1}' | sh" on remote system "10.30.171.166" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:41.246594" elapsed="0.000441"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:41.247570" level="INFO">${conn_id} = 8</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.247180" elapsed="0.000415"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-25T23:31:41.248688" level="INFO">Length is 0.</msg>
<msg time="2026-04-25T23:31:41.248791" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-25T23:31:41.248192" elapsed="0.000623"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:41.248961" elapsed="0.000620"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-25T23:31:41.250992" level="INFO">Logging into '10.30.171.166:22' as 'jenkins'.</msg>
<msg time="2026-04-25T23:31:41.560354" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.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 25 23:31:37 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check 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 25 23:31:40 2026 from 10.30.171.101
[?2004h[jenkins@releng-60306-7-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-25T23:31:41.250385" elapsed="0.310223"/>
</kw>
<msg time="2026-04-25T23:31:41.560817" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:41.249757" elapsed="0.311169"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-25T23:31:41.247815" elapsed="0.313233"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-25T23:31:41.561627" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | awk '{print "kill -9 " $1}' | sh'.</msg>
<msg time="2026-04-25T23:31:41.584566" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-25T23:31:41.584867" level="INFO">${stdout} = </msg>
<msg time="2026-04-25T23:31:41.584966" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-25T23:31:41.561319" elapsed="0.023697"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-25T23:31:41.585367" elapsed="0.000560"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:41.587077" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:41.586332" 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-25T23:31:41.587681" elapsed="0.000074"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:41.587359" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:41.587303" 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-25T23:31:41.588258" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-25T23:31:41.588007" elapsed="0.000386"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:41.587973" elapsed="0.000473"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-25T23:31:41.588522" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:41.596313" elapsed="0.000267"/>
</kw>
<msg time="2026-04-25T23:31:41.596696" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:41.595192" elapsed="0.001587"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:41.596931" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:41.597082" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:41.589250" elapsed="0.007911"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-25T23:31:41.244997" elapsed="0.352256"/>
</kw>
<msg time="2026-04-25T23:31:41.597305" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:41.244444" elapsed="0.352910"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-25T23:31:41.243916" elapsed="0.353701"/>
</kw>
<msg time="2026-04-25T23:31:41.597662" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:41.243410" elapsed="0.354316"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:41.600946" elapsed="0.000150"/>
</kw>
<msg time="2026-04-25T23:31:41.601139" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:41.600371" elapsed="0.000829"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:41.601345" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:41.601500" elapsed="0.000020"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:41.598014" elapsed="0.003566"/>
</kw>
<msg time="2026-04-25T23:31:41.601674" 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-25T23:31:41.242589" elapsed="0.359114"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:41.602250" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:41.601993" elapsed="0.000318"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-25T23:31:41.602356" 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-25T23:31:41.241663" elapsed="0.360858"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-25T23:31:41.241498" elapsed="0.361065"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-25T23:31:41.241363" elapsed="0.361239"/>
</for>
<arg>command=${NODE_KILL_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-25T23:31:41.239304" elapsed="0.363360"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:31:41.603152" level="INFO">${updated_index_list} = [1]</msg>
<var>${updated_index_list}</var>
<arg>@{index_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:31:41.602849" elapsed="0.000328"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${updated_index_list}</arg>
<arg>@{kill_index_list}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:41.603319" elapsed="0.000254"/>
</kw>
<if>
<branch type="IF" condition="not ${confirm}">
<return>
<value>${updated_index_list}</value>
<status status="NOT RUN" start="2026-04-25T23:31:41.603805" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:41.603644" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:41.603626" elapsed="0.000245"/>
</if>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-25T23:31:42.604662" level="INFO">Slept 1 second.</msg>
<msg time="2026-04-25T23:31:42.604839" level="INFO">Kill -9 closes open files, which may take longer than ssh overhead, but not long enough to warrant WUKS.</msg>
<arg>1s</arg>
<arg>Kill -9 closes open files, which may take longer than ssh overhead, but not long enough to warrant WUKS.</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-25T23:31:41.604000" elapsed="1.000979"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:42.608544" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-25T23:31:42.607825" elapsed="0.000780"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:31:42.610212" level="INFO">${member_ip} = 10.30.171.166</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:31:42.609835" elapsed="0.000414"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:42.611314" level="INFO">index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-25T23:31:42.611454" level="INFO">${current_connection} = index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-25T23:31:42.611133" elapsed="0.000357"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:42.615628" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:42.615183" elapsed="0.000685"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:42.615153" elapsed="0.000756"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:42.616405" level="INFO">index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-25T23:31:42.616586" level="INFO">${current_ssh_connection} = index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-25T23:31:42.616162" elapsed="0.000466"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:42.617970" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.166" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:42.616863" elapsed="0.001155"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:42.618823" level="INFO">${conn_id} = 9</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-25T23:31:42.618163" elapsed="0.000695"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-25T23:31:42.620157" level="INFO">Length is 0.</msg>
<msg time="2026-04-25T23:31:42.620346" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-25T23:31:42.619591" elapsed="0.000794"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:42.620648" elapsed="0.000655"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-25T23:31:42.622687" level="INFO">Logging into '10.30.171.166:22' as 'jenkins'.</msg>
<msg time="2026-04-25T23:31:42.942403" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.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 25 23:31:37 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check 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 25 23:31:41 2026 from 10.30.171.101
[?2004h[jenkins@releng-60306-7-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-25T23:31:42.622299" elapsed="0.320459"/>
</kw>
<msg time="2026-04-25T23:31:42.942874" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:42.621604" elapsed="0.321435"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-25T23:31:42.619068" elapsed="0.324214"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-25T23:31:42.943949" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-25T23:31:42.967237" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-25T23:31:42.967611" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-25T23:31:42.967762" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-25T23:31:42.943550" elapsed="0.024269"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-25T23:31:42.968167" elapsed="0.000679"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:42.970441" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:42.969263" 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-25T23:31:42.971149" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:42.970791" elapsed="0.000479"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:42.970699" 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-25T23:31:42.971786" elapsed="0.000064"/>
</return>
<status status="PASS" start="2026-04-25T23:31:42.971445" elapsed="0.000481"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:42.971410" elapsed="0.000570"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-25T23:31:42.972055" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:42.979434" elapsed="0.000319"/>
</kw>
<msg time="2026-04-25T23:31:42.979842" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:42.978249" elapsed="0.001734"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:42.980217" elapsed="0.000054"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:42.980462" elapsed="0.000053"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:42.972873" elapsed="0.007758"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-25T23:31:42.614413" elapsed="0.366348"/>
</kw>
<msg time="2026-04-25T23:31:42.980817" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:42.613195" elapsed="0.367690"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-25T23:31:42.612396" elapsed="0.368605"/>
</kw>
<msg time="2026-04-25T23:31:42.981068" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:42.611694" elapsed="0.369431"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:42.984318" elapsed="0.000144"/>
</kw>
<msg time="2026-04-25T23:31:42.984506" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:42.983805" 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="NOT RUN" start="2026-04-25T23:31:42.984739" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:42.984920" elapsed="0.000025"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:42.981414" elapsed="0.003596"/>
</kw>
<msg time="2026-04-25T23:31:42.985136" 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-25T23:31:42.610531" elapsed="0.374636"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:42.985616" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:42.985360" elapsed="0.000300"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-25T23:31:42.985777" elapsed="0.000032"/>
</return>
<msg time="2026-04-25T23:31:42.985978" 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-25T23:31:42.609093" elapsed="0.376910"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-25T23:31:42.986054" elapsed="0.000027"/>
</return>
<msg time="2026-04-25T23:31:42.986205" 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-25T23:31:42.607008" elapsed="0.379227"/>
</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-25T23:31:42.986388" elapsed="0.000407"/>
</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-25T23:31:42.606060" elapsed="0.380803"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-25T23:31:42.605592" elapsed="0.381306"/>
</iter>
<var>${index}</var>
<value>@{kill_index_list}</value>
<status status="PASS" start="2026-04-25T23:31:42.605163" elapsed="0.381776"/>
</for>
<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-25T23:31:42.990102" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:31:42.989696" elapsed="0.000433"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:31:42.990587" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:31:42.990277" elapsed="0.000336"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-25T23:31:42.990658" elapsed="0.000032"/>
</return>
<msg time="2026-04-25T23:31:42.990833" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-25T23:31:42.989309" elapsed="0.001549"/>
</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-25T23:31:42.992002" level="INFO">${member_ip} = 10.30.171.166</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:31:42.991719" elapsed="0.000310"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:42.992823" level="INFO">index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-25T23:31:42.992985" level="INFO">${current_connection} = index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-25T23:31:42.992659" 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-25T23:31:42.995946" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:42.995644" elapsed="0.000361"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:42.995624" elapsed="0.000404"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:42.996283" level="INFO">index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-25T23:31:42.996391" level="INFO">${current_ssh_connection} = index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-25T23:31:42.996174" elapsed="0.000247"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:42.997012" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.166" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:42.996562" elapsed="0.000498"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:42.997625" level="INFO">${conn_id} = 10</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-25T23:31:42.997209" elapsed="0.000459"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-25T23:31:42.998791" level="INFO">Length is 0.</msg>
<msg time="2026-04-25T23:31:42.998873" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-25T23:31:42.998286" elapsed="0.000611"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:42.999044" elapsed="0.000566"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-25T23:31:43.001018" level="INFO">Logging into '10.30.171.166:22' as 'jenkins'.</msg>
<msg time="2026-04-25T23:31:43.360627" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.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 25 23:31:37 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check 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 25 23:31:42 2026 from 10.30.171.101
[?2004h[jenkins@releng-60306-7-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-25T23:31:43.000398" elapsed="0.360527"/>
</kw>
<msg time="2026-04-25T23:31:43.361095" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:42.999798" elapsed="0.361412"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-25T23:31:42.997902" elapsed="0.363430"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-25T23:31:43.361898" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-25T23:31:43.374311" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-25T23:31:43.374470" level="INFO">${stdout} = </msg>
<msg time="2026-04-25T23:31:43.374539" 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-25T23:31:43.361600" elapsed="0.012990"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-25T23:31:43.374978" elapsed="0.000512"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:43.376626" 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-25T23:31:43.375986" 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-25T23:31:43.377246" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:43.376941" elapsed="0.000416"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:43.376888" elapsed="0.000519"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-25T23:31:43.377810" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-25T23:31:43.377523" elapsed="0.000422"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:43.377490" elapsed="0.000508"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-25T23:31:43.378072" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:43.384344" elapsed="0.000253"/>
</kw>
<msg time="2026-04-25T23:31:43.384702" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:43.383513" elapsed="0.001272"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:43.384934" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:43.385084" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:43.378788" 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-25T23:31:42.995102" elapsed="0.390150"/>
</kw>
<msg time="2026-04-25T23:31:43.385303" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:42.994305" elapsed="0.391046"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-25T23:31:42.993749" elapsed="0.391680"/>
</kw>
<msg time="2026-04-25T23:31:43.385469" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:42.993168" elapsed="0.392345"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:43.388652" elapsed="0.000163"/>
</kw>
<msg time="2026-04-25T23:31:43.388858" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:43.388159" 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="NOT RUN" start="2026-04-25T23:31:43.389059" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:43.389206" elapsed="0.000019"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:43.385806" elapsed="0.003483"/>
</kw>
<msg time="2026-04-25T23:31:43.389380" 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-25T23:31:42.992237" elapsed="0.397168"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:43.389833" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:43.389566" elapsed="0.000308"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-25T23:31:43.389917" elapsed="0.000027"/>
</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-25T23:31:42.991264" elapsed="0.398844"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-25T23:31:42.991064" elapsed="0.399084"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-25T23:31:42.990917" elapsed="0.399270"/>
</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-25T23:31:42.987155" elapsed="0.403095"/>
</kw>
<return>
<value>${updated_index_list}</value>
<status status="PASS" start="2026-04-25T23:31:43.390291" elapsed="0.000025"/>
</return>
<doc>If the list is empty, kill all ODL instances. Otherwise, kill members based on ${kill_index_list}
If ${confirm} is True, sleep 1 second and verify killed 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="PASS" start="2026-04-25T23:31:41.231559" elapsed="2.158861"/>
</kw>
<kw name="Clean_Journals_Data_And_Snapshots_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-25T23:31:43.393545" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:31:43.393162" elapsed="0.000410"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:31:43.394030" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:31:43.393737" elapsed="0.000318"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-25T23:31:43.394099" elapsed="0.000032"/>
</return>
<msg time="2026-04-25T23:31:43.394284" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-25T23:31:43.392797" elapsed="0.001512"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:43.394834" level="INFO">${command} = rm -rf "/tmp/karaf-0.24.0-SNAPSHOT/"*journal "/tmp/karaf-0.24.0-SNAPSHOT/snapshots" "/tmp/karaf-0.24.0-SNAPSHOT/data"</msg>
<var>${command}</var>
<arg>rm -rf "${karaf_home}/"*journal "${karaf_home}/snapshots" "${karaf_home}/data"</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-25T23:31:43.394473" elapsed="0.000388"/>
</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-25T23:31:43.395908" level="INFO">${member_ip} = 10.30.171.166</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:31:43.395618" elapsed="0.000316"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:43.396765" level="INFO">index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-25T23:31:43.396873" level="INFO">${current_connection} = index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-25T23:31:43.396541" 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-25T23:31:43.399608" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:43.399353" elapsed="0.000311"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:43.399335" elapsed="0.000356"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:43.399946" level="INFO">index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-25T23:31:43.400044" level="INFO">${current_ssh_connection} = index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-25T23:31:43.399839" elapsed="0.000231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:43.400716" level="INFO">Attempting to execute command "rm -rf "/tmp/karaf-0.24.0-SNAPSHOT/"*journal "/tmp/karaf-0.24.0-SNAPSHOT/snapshots" "/tmp/karaf-0.24.0-SNAPSHOT/data"" on remote system "10.30.171.166" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:43.400310" elapsed="0.000456"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:43.401289" level="INFO">${conn_id} = 11</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-25T23:31:43.400910" elapsed="0.000404"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-25T23:31:43.402188" level="INFO">Length is 0.</msg>
<msg time="2026-04-25T23:31:43.402263" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-25T23:31:43.401908" 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-25T23:31:43.402451" elapsed="0.000380"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-25T23:31:43.403989" level="INFO">Logging into '10.30.171.166:22' as 'jenkins'.</msg>
<msg time="2026-04-25T23:31:43.720340" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.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 25 23:31:37 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check 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 25 23:31:43 2026 from 10.30.171.101
[?2004h[jenkins@releng-60306-7-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-25T23:31:43.403332" elapsed="0.317188"/>
</kw>
<msg time="2026-04-25T23:31:43.720587" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:43.402989" elapsed="0.317667"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-25T23:31:43.401514" elapsed="0.319258"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-25T23:31:43.721171" level="INFO">Executing command 'rm -rf "/tmp/karaf-0.24.0-SNAPSHOT/"*journal "/tmp/karaf-0.24.0-SNAPSHOT/snapshots" "/tmp/karaf-0.24.0-SNAPSHOT/data"'.</msg>
<msg time="2026-04-25T23:31:43.795442" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-25T23:31:43.795722" level="INFO">${stdout} = </msg>
<msg time="2026-04-25T23:31:43.795825" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-25T23:31:43.720955" elapsed="0.074919"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-25T23:31:43.796211" elapsed="0.000477"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:43.797663" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:43.797081" 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-25T23:31:43.798240" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:43.797953" elapsed="0.000393"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:43.797907" 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-25T23:31:43.798836" elapsed="0.000062"/>
</return>
<status status="PASS" start="2026-04-25T23:31:43.798513" elapsed="0.000459"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:43.798480" elapsed="0.000545"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-25T23:31:43.799098" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:43.806544" elapsed="0.000538"/>
</kw>
<msg time="2026-04-25T23:31:43.807183" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:43.805323" elapsed="0.002001"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:43.807598" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:43.807767" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:43.799790" elapsed="0.008066"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-25T23:31:43.398831" elapsed="0.409114"/>
</kw>
<msg time="2026-04-25T23:31:43.807996" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:43.398061" elapsed="0.409981"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-25T23:31:43.397519" elapsed="0.410599"/>
</kw>
<msg time="2026-04-25T23:31:43.808158" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:43.397045" elapsed="0.411156"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:43.811315" elapsed="0.000139"/>
</kw>
<msg time="2026-04-25T23:31:43.811496" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:43.810808" 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="NOT RUN" start="2026-04-25T23:31:43.811720" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:43.811912" elapsed="0.000021"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:43.808470" elapsed="0.003524"/>
</kw>
<msg time="2026-04-25T23:31:43.812083" 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-25T23:31:43.396137" elapsed="0.415970"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:43.812511" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:43.812266" elapsed="0.000285"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-25T23:31:43.812594" elapsed="0.000027"/>
</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-25T23:31:43.395224" elapsed="0.417522"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-25T23:31:43.395057" elapsed="0.417727"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-25T23:31:43.394919" elapsed="0.417900"/>
</for>
<doc>Delete journal and snapshots directories on every node listed (or all).
BEWARE: If only a subset of members is cleaned, this causes RetiredGenerationException in Carbon after the affected node re-start.
See https://bugs.opendaylight.org/show_bug.cgi?id=8138</doc>
<status status="PASS" start="2026-04-25T23:31:43.390665" elapsed="0.422210"/>
</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-25T23:31:43.814110" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:43.813732" elapsed="0.000440"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:43.813713" 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-25T23:31:43.814327" elapsed="0.000306"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:31:43.819492" 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-25T23:31:43.818974" elapsed="0.000546"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-25T23:31:43.819758" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-25T23:31:43.819598" elapsed="0.000217"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:43.819580" elapsed="0.000258"/>
</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-25T23:31:43.819971" 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-25T23:31:43.820129" 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-25T23:31:43.820287" elapsed="0.000019"/>
</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-25T23:31:43.820440" 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-25T23:31:43.820593" 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-25T23:31:43.820764" elapsed="0.000021"/>
</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-25T23:31:43.820922" 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-25T23:31:43.818674" elapsed="0.002322"/>
</kw>
<status status="PASS" start="2026-04-25T23:31:43.813502" elapsed="0.007543"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-25T23:31:43.813142" elapsed="0.007944"/>
</kw>
<doc>The ODL prepared by releng/builder is the newer one, kill it.
Also, remove journal and snapshots.</doc>
<tag>1node</tag>
<tag>carpeople</tag>
<tag>critical</tag>
<status status="PASS" start="2026-04-25T23:31:41.134339" elapsed="2.686785"/>
</test>
<test id="s1-t3" name="Install_Older_Odl" line="90">
<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-25T23:31:43.824549" elapsed="0.000225"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-25T23:31:43.824300" elapsed="0.000530"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-25T23:31:43.825789" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:43.825663" elapsed="0.000172"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:43.825645" elapsed="0.000244"/>
</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-25T23:31:43.830649" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:43.830543" elapsed="0.000173"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:43.830525" elapsed="0.000214"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:31:43.831787" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:31:43.831373" elapsed="0.000441"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:31:43.832253" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:31:43.831962" elapsed="0.000316"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-25T23:31:43.832323" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:31:43.832476" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-25T23:31:43.830969" 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-25T23:31:43.837725" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:43.837596" elapsed="0.000177"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:43.837578" elapsed="0.000217"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-25T23:31:43.838922" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:43.838808" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:43.838790" elapsed="0.000199"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:31:43.839373" level="INFO">${karaf_connection_index} = 4</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:31:43.839120" elapsed="0.000278"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:43.839799" level="INFO">${current_connection_index} = 7</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:43.839577" elapsed="0.000248"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-25T23:31:43.840557" 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-25T23:31:43.840290" elapsed="0.003731">OSError: Socket is closed</status>
</kw>
<msg time="2026-04-25T23:31:43.844140" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-25T23:31:43.844186" 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-25T23:31:43.839970" elapsed="0.004239"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-25T23:31:53.845353" 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-25T23:31:43.844720" elapsed="10.001367">No match found for 'opendaylight-user.*root.*&gt;' in 10 seconds
Output:
.</status>
</kw>
<msg time="2026-04-25T23:31:53.846291" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-25T23:31:53.846340" 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-25T23:31:43.844368" elapsed="10.001996"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-25T23:31:53.847511" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Install_Older_Odl"</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-25T23:31:53.846899" elapsed="0.000689">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Install_Older_Odl"</status>
</kw>
<status status="FAIL" start="2026-04-25T23:31:53.846523" elapsed="0.001145">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Install_Older_Odl"</status>
</branch>
<status status="FAIL" start="2026-04-25T23:31:53.846452" elapsed="0.001275">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Install_Older_Odl"</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-25T23:31:53.847898" 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-25T23:31:53.848114" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:53.847985" elapsed="0.000180"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:31:53.847968" elapsed="0.000219"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-25T23:31:53.848233" 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">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:53.850563" elapsed="0.000235"/>
</kw>
<msg time="2026-04-25T23:31:53.850864" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:53.849651" elapsed="0.001360"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:53.851365" elapsed="0.000044"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:53.851639" elapsed="0.000047"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:53.849138" elapsed="0.002695"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-25T23:31:53.848548" elapsed="0.003334"/>
</kw>
<arg>${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-25T23:31:43.838440" elapsed="10.013531">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Install_Older_Odl"</status>
</kw>
<msg time="2026-04-25T23:31:53.852076" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-25T23:31:53.852121" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Install_Older_Odl"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:31:43.837934" elapsed="10.014210"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-25T23:31:53.852341" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:53.852229" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:53.852210" 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-25T23:31:53.853499" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:53.853392" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:53.853374" elapsed="0.000194"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:53.853859" level="INFO">index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-25T23:31:53.853964" level="INFO">${current_ssh_connection_object} = index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-25T23:31:53.853737" elapsed="0.000257"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:53.854401" level="INFO">{1: 4}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:53.854132" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:53.855098" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:53.854846" 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-25T23:31:53.855642" elapsed="0.000237"/>
</kw>
<msg time="2026-04-25T23:31:53.855979" level="INFO">${status} = PASS</msg>
<msg time="2026-04-25T23:31:53.856026" level="INFO">${old_connection_index} = 4</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:31:53.855292" elapsed="0.000757"/>
</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-25T23:31:53.856873" elapsed="0.000228"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-25T23:31:53.858105" 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-25T23:31:53.857819" elapsed="0.001203">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-25T23:31:53.857259" elapsed="0.001860"/>
</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-25T23:31:53.860029" elapsed="0.000238"/>
</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-25T23:31:53.859278" elapsed="0.001065"/>
</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-25T23:31:53.856333" elapsed="0.004059"/>
</kw>
<status status="PASS" start="2026-04-25T23:31:53.856124" elapsed="0.004318"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:53.856106" elapsed="0.004362"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:31:53.861325" level="INFO">${ip_address} = 10.30.171.166</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:31:53.861057" elapsed="0.000295"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-25T23:31:53.861401" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:31:53.861550" level="INFO">${odl_ip} = 10.30.171.166</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-25T23:31:53.860662" 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-25T23:31:53.861743" elapsed="0.000418"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:53.862466" level="INFO">index=12
host=10.30.171.166
alias=None
port=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-25T23:31:53.862570" level="INFO">${karaf_connection_object} = index=12
host=10.30.171.166
alias=None
port=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-25T23:31:53.862318" elapsed="0.000311"/>
</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-25T23:31:53.862788" elapsed="0.002219"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-25T23:31:53.865425" level="INFO">Logging into '10.30.171.166:8101' as 'karaf'.</msg>
<msg time="2026-04-25T23:31:53.866460" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</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-25T23:31:53.865161" elapsed="0.001956">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</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">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:53.871505" elapsed="0.000789"/>
</kw>
<msg time="2026-04-25T23:31:53.872594" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:53.870150" elapsed="0.002698"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:53.873203" elapsed="0.000050"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:53.873571" elapsed="0.000048"/>
</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-25T23:31:53.867899" elapsed="0.005910"/>
</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-25T23:31:53.867384" elapsed="0.006540"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-25T23:31:53.853095" elapsed="0.021031">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</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-25T23:31:53.875013" elapsed="0.000061"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-25T23:31:53.875212" elapsed="0.000050"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_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-25T23:31:43.837264" elapsed="10.038206">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</status>
</kw>
<msg time="2026-04-25T23:31:53.875783" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-25T23:31:53.875887" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:31:43.832882" elapsed="10.043063"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:53.876743" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:53.876131" elapsed="0.000735"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:53.876085" elapsed="0.000837"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-25T23:31:43.832750" elapsed="10.044228"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-25T23:31:43.832558" elapsed="10.044495"/>
</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-25T23:31:43.830167" elapsed="10.047012"/>
</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-25T23:31:43.825380" elapsed="10.051923"/>
</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-25T23:31:43.824969" elapsed="10.052449"/>
</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-25T23:31:43.821992" elapsed="10.055552"/>
</kw>
<kw name="Execute_Command_Should_Pass" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-25T23:31:53.882263" level="INFO">Executing command 'mkdir -p "/tmp/older" &amp;&amp; cd "/tmp/older" &amp;&amp; rm -rf * &amp;&amp; wget -N ""'.</msg>
<msg time="2026-04-25T23:31:53.906209" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-25T23:31:53.906460" level="INFO">${stdout} = </msg>
<msg time="2026-04-25T23:31:53.906555" level="INFO">${stderr} = http://: Invalid host name.</msg>
<msg time="2026-04-25T23:31:53.906643" level="INFO">${rc} = 1</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-25T23:31:53.881837" elapsed="0.024893"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-25T23:31:53.909443" level="INFO">Length is 27.</msg>
<msg time="2026-04-25T23:31:53.909621" level="FAIL">'http://: Invalid host name.' should be empty.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-25T23:31:53.908014" elapsed="0.001794">'http://: Invalid host name.' should be empty.</status>
</kw>
<msg time="2026-04-25T23:31:53.910044" level="INFO">${emptiness_status} = FAIL</msg>
<msg time="2026-04-25T23:31:53.910140" level="INFO">${result} = 'http://: Invalid host name.' should be empty.</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-25T23:31:53.907235" elapsed="0.002955"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:31:53.911565" level="INFO">${success} = False</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-25T23:31:53.910542" 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-25T23:31:53.913257" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:53.912879" elapsed="0.000438"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:53.913872" level="INFO">http://: Invalid host name.</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:53.913516" elapsed="0.000418"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:53.914452" level="INFO">1</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:53.914127" elapsed="0.000384"/>
</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-25T23:31:53.912322" elapsed="0.002264"/>
</kw>
<status status="PASS" start="2026-04-25T23:31:53.911834" elapsed="0.002801"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:53.911789" elapsed="0.002880"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-25T23:31:53.914933" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:53.914778" elapsed="0.000216"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:53.914746" elapsed="0.000278"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-25T23:31:53.915220" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:53.915097" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:53.915077" elapsed="0.000232"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-25T23:31:53.915988" level="FAIL">Got rc: 1 or stderr was not empty: http://: Invalid host name.</msg>
<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="FAIL" start="2026-04-25T23:31:53.915489" elapsed="0.000589">Got rc: 1 or stderr was not empty: http://: Invalid host name.</status>
</kw>
<arg>${command}</arg>
<arg>return_success_only=False</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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="FAIL" start="2026-04-25T23:31:53.880481" elapsed="0.035740">Got rc: 1 or stderr was not empty: http://: Invalid host name.</status>
</kw>
<msg time="2026-04-25T23:31:53.916296" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=False</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="FAIL" start="2026-04-25T23:31:53.879233" elapsed="0.037126"/>
</kw>
<arg>mkdir -p "${ALTERNATIVE_BUNDLEFOLDER_PARENT}" &amp;&amp; cd "${ALTERNATIVE_BUNDLEFOLDER_PARENT}" &amp;&amp; rm -rf * &amp;&amp; wget -N "${odl_zip_url}"</arg>
<doc>A wrapper for Execute_Command_Passes with return_success_only=False
Also, log_on_success defaults to True (but is customizable, unlike return_success_only)..</doc>
<status status="FAIL" start="2026-04-25T23:31:53.878104" elapsed="0.038385">Got rc: 1 or stderr was not empty: http://: Invalid host name.</status>
</kw>
<kw name="Execute_Command_Should_Pass" owner="SSHKeywords">
<var>${bundle_dir}</var>
<arg>cd "${ALTERNATIVE_BUNDLEFOLDER_PARENT}" &amp;&amp; unzip -q *.zip &amp;&amp; rm *.zip &amp;&amp; ls -1</arg>
<doc>A wrapper for Execute_Command_Passes with return_success_only=False
Also, log_on_success defaults to True (but is customizable, unlike return_success_only)..</doc>
<status status="NOT RUN" start="2026-04-25T23:31:53.916789" elapsed="0.000035"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${alternative_bundlefolder}</arg>
<arg>${ALTERNATIVE_BUNDLEFOLDER_PARENT}/${bundle_dir}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:53.917036" elapsed="0.000028"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${cfg_filename}</var>
<arg>org.apache.karaf.features.cfg</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:53.917258" elapsed="0.000028"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${cfg_older}</var>
<arg>${alternative_bundlefolder}/etc/${cfg_filename}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:53.917472" elapsed="0.000028"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${cfg_newer}</var>
<arg>${WORKSPACE}/${BUNDLEFOLDER}/etc/${cfg_filename}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:53.917704" elapsed="0.000030"/>
</kw>
<kw name="Execute_Command_Should_Pass" owner="SSHKeywords">
<var>${vanilla_line}</var>
<arg>grep 'featuresBoot' "${cfg_older}" | grep -v 'featuresBootAsynchronous'</arg>
<doc>A wrapper for Execute_Command_Passes with return_success_only=False
Also, log_on_success defaults to True (but is customizable, unlike return_success_only)..</doc>
<status status="NOT RUN" start="2026-04-25T23:31:53.918001" elapsed="0.000033"/>
</kw>
<kw name="Execute_Command_Should_Pass" owner="SSHKeywords">
<var>${csit_line}</var>
<arg>grep 'featuresBoot' "${cfg_newer}" | grep -v 'featuresBootAsynchronous'</arg>
<doc>A wrapper for Execute_Command_Passes with return_success_only=False
Also, log_on_success defaults to True (but is customizable, unlike return_success_only)..</doc>
<status status="NOT RUN" start="2026-04-25T23:31:53.918282" elapsed="0.000032"/>
</kw>
<kw name="Extract_Karaf4_Boot_Features">
<var>${karaf4_features}</var>
<arg>${csit_line}</arg>
<doc>Extract boot features. It is used for the 1st line of karaf4 featuresBoot parameter from org.apache.karaf.features.cfg.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:53.918541" elapsed="0.000030"/>
</kw>
<kw name="${vanilla_line},${karaf4_features}">
<var>${new_csit_line}</var>
<status status="NOT RUN" start="2026-04-25T23:31:53.919231" elapsed="0.000036"/>
</kw>
<kw name="Execute_Command_Should_Pass" owner="SSHKeywords">
<arg>sed -i 's/${vanilla_line}/${new_csit_line}/g' "${cfg_older}"</arg>
<doc>A wrapper for Execute_Command_Passes with return_success_only=False
Also, log_on_success defaults to True (but is customizable, unlike return_success_only)..</doc>
<status status="NOT RUN" start="2026-04-25T23:31:53.919521" elapsed="0.000032"/>
</kw>
<kw name="Execute_Command_Should_Pass" owner="SSHKeywords">
<var>${updated_line}</var>
<arg>grep 'featuresBoot' "${cfg_older}" | grep -v 'featuresBootAsynchronous'</arg>
<doc>A wrapper for Execute_Command_Passes with return_success_only=False
Also, log_on_success defaults to True (but is customizable, unlike return_success_only)..</doc>
<status status="NOT RUN" start="2026-04-25T23:31:53.919825" elapsed="0.000032"/>
</kw>
<kw name="Should Not Be Equal" owner="BuiltIn">
<arg>${vanilla_line}</arg>
<arg>${updated_line}</arg>
<doc>Fails if the given objects are equal.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:53.920015" elapsed="0.000021"/>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${new_csit_line}</arg>
<arg>${updated_line}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:53.920172" elapsed="0.000020"/>
</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-25T23:31:53.921464" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:53.921083" elapsed="0.000442"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:53.921058" elapsed="0.000492"/>
</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-25T23:31:53.921685" elapsed="0.000473"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:31:53.927248" 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-25T23:31:53.926809" elapsed="0.000467"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-25T23:31:53.927491" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:53.927351" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:53.927332" elapsed="0.000220"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:31:53.927998" 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-25T23:31:53.927701" elapsed="0.000324"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-25T23:31:53.928434" level="INFO">${reference} = controller_akka1_txt_Install_Older_Odl</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-25T23:31:53.928170" elapsed="0.000290"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-25T23:31:53.928807" level="INFO">${reference} = controller_akka1_txt_install_older_odl</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-25T23:31:53.928605" elapsed="0.000227"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:53.929311" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_install_older_odl"
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-25T23:31:53.928973" elapsed="0.000364"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:53.929799" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_install_older_odl&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-25T23:31:53.929479" elapsed="0.000347"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-25T23:31:53.930405" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_install_older_odl"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_install_older_odl&amp;order=bug_status"

Got rc: 1 or stderr was not empty: http://: Invalid host name.</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-25T23:31:53.929967" elapsed="0.000493"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:53.930910" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_install_older_odl"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_install_older_odl&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-25T23:31:53.930600" elapsed="0.000369"/>
</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-25T23:31:53.926495" elapsed="0.004531"/>
</kw>
<status status="PASS" start="2026-04-25T23:31:53.920855" elapsed="0.010221"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-25T23:31:53.920486" elapsed="0.010630"/>
</kw>
<doc>Download .zip of older ODL, unpack, delete .zip, copy featuresBoot line.</doc>
<tag>1node</tag>
<tag>carpeople</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-25T23:31:43.821443" elapsed="10.109712">... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_install_older_odl"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_install_older_odl&amp;order=bug_status"

Got rc: 1 or stderr was not empty: http://: Invalid host name.</status>
</test>
<test id="s1-t4" name="Start_Older_Odl" line="119">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-25T23:31:53.934338" elapsed="0.000204"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-25T23:31:53.934090" elapsed="0.000506"/>
</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-25T23:31:53.935594" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:53.935484" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:53.935465" 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-25T23:31:53.940383" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:53.940277" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:53.940260" elapsed="0.000190"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:31:53.941409" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:31:53.941035" elapsed="0.000401"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:31:53.941898" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:31:53.941584" elapsed="0.000339"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-25T23:31:53.941968" elapsed="0.000030"/>
</return>
<msg time="2026-04-25T23:31:53.942122" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-25T23:31:53.940660" elapsed="0.001486"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-25T23:31:53.947586" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:53.947480" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:53.947461" 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-25T23:31:53.948712" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:53.948591" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:53.948574" elapsed="0.000206"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:31:53.949174" 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-25T23:31:53.948912" elapsed="0.000288"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:53.949533" level="INFO">${current_connection_index} = 7</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:53.949345" elapsed="0.000213"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-25T23:31:53.950314" 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-25T23:31:53.950053" elapsed="0.000806">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-25T23:31:53.950973" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-25T23:31:53.951016" 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-25T23:31:53.949728" elapsed="0.001311"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-25T23:31:53.951825" 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-25T23:31:53.951558" elapsed="0.000780">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-25T23:31:53.952447" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-25T23:31:53.952491" 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-25T23:31:53.951221" elapsed="0.001292"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-25T23:31:53.953242" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Start_Older_Odl"</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-25T23:31:53.952805" elapsed="0.000497">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Start_Older_Odl"</status>
</kw>
<status status="FAIL" start="2026-04-25T23:31:53.952586" elapsed="0.000780">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Start_Older_Odl"</status>
</branch>
<status status="FAIL" start="2026-04-25T23:31:53.952567" elapsed="0.000831">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Start_Older_Odl"</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-25T23:31:53.953581" 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-25T23:31:53.953815" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:53.953666" elapsed="0.000201"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:31:53.953650" elapsed="0.000239"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-25T23:31:53.953922" 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">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:53.956065" elapsed="0.000201"/>
</kw>
<msg time="2026-04-25T23:31:53.956322" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:53.955187" elapsed="0.001276"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:53.956750" elapsed="0.000046"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:53.957023" elapsed="0.000042"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:53.954665" elapsed="0.002529"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-25T23:31:53.954172" elapsed="0.003075"/>
</kw>
<arg>${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-25T23:31:53.948300" elapsed="0.009031">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Start_Older_Odl"</status>
</kw>
<msg time="2026-04-25T23:31:53.957430" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-25T23:31:53.957472" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Start_Older_Odl"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:31:53.947809" elapsed="0.009686"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-25T23:31:53.957674" elapsed="0.000079"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:53.957569" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:53.957551" elapsed="0.000258"/>
</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-25T23:31:53.958839" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:53.958722" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:53.958677" elapsed="0.000229"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:53.959203" level="INFO">index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-25T23:31:53.959309" level="INFO">${current_ssh_connection_object} = index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-25T23:31:53.959046" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:53.959756" level="INFO">{1: 12}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:53.959477" elapsed="0.000324"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:53.960184" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:53.959942" 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-25T23:31:53.960734" elapsed="0.000219"/>
</kw>
<msg time="2026-04-25T23:31:53.961050" level="INFO">${status} = PASS</msg>
<msg time="2026-04-25T23:31:53.961095" 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-25T23:31:53.960373" elapsed="0.000744"/>
</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-25T23:31:53.961917" elapsed="0.000365"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-25T23:31:53.963292" 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-25T23:31:53.962998" elapsed="0.001283">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-25T23:31:53.962455" elapsed="0.001922"/>
</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-25T23:31:53.965015" elapsed="0.000175"/>
</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-25T23:31:53.964538" elapsed="0.000725"/>
</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-25T23:31:53.961399" elapsed="0.003913"/>
</kw>
<status status="PASS" start="2026-04-25T23:31:53.961192" elapsed="0.004204"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:53.961173" elapsed="0.004250"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:31:53.966214" level="INFO">${ip_address} = 10.30.171.166</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:31:53.965947" elapsed="0.000294"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-25T23:31:53.966290" elapsed="0.000030"/>
</return>
<msg time="2026-04-25T23:31:53.966441" level="INFO">${odl_ip} = 10.30.171.166</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-25T23:31:53.965617" elapsed="0.000848"/>
</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-25T23:31:53.966607" elapsed="0.000478"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:53.967392" level="INFO">index=13
host=10.30.171.166
alias=None
port=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-25T23:31:53.967492" level="INFO">${karaf_connection_object} = index=13
host=10.30.171.166
alias=None
port=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-25T23:31:53.967283" 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-25T23:31:53.967655" elapsed="0.002221"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-25T23:31:53.970295" level="INFO">Logging into '10.30.171.166:8101' as 'karaf'.</msg>
<msg time="2026-04-25T23:31:53.971231" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</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-25T23:31:53.970030" elapsed="0.001580">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</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">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:53.975529" elapsed="0.000265"/>
</kw>
<msg time="2026-04-25T23:31:53.975911" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:53.974770" 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="NOT RUN" start="2026-04-25T23:31:53.976135" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:53.976285" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:53.972382" elapsed="0.003983"/>
</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-25T23:31:53.971885" elapsed="0.004527"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-25T23:31:53.958201" elapsed="0.018291">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</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-25T23:31:53.976824" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-25T23:31:53.976898" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-25T23:31:53.947146" elapsed="0.029853">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</status>
</kw>
<msg time="2026-04-25T23:31:53.977101" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-25T23:31:53.977142" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:31:53.942525" elapsed="0.034640"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:53.977474" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:53.977239" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:53.977221" elapsed="0.000328"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-25T23:31:53.942392" elapsed="0.035179"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-25T23:31:53.942204" elapsed="0.035398"/>
</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-25T23:31:53.939917" elapsed="0.037738"/>
</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-25T23:31:53.935200" elapsed="0.042530"/>
</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-25T23:31:53.934755" elapsed="0.043055"/>
</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-25T23:31:53.932028" elapsed="0.045842"/>
</kw>
<kw name="Start_Members_From_List_Or_All" owner="ClusterManagement">
<msg time="2026-04-25T23:31:53.985861" level="FAIL">Variable '${alternative_bundlefolder}' not found. Did you mean:
    ${ALTERNATIVE_BUNDLEFOLDER_PARENT}</msg>
<arg>wait_for_sync=True</arg>
<arg>timeout=${CLUSTER_BOOTUP_SYNC_TIMEOUT}</arg>
<arg>karaf_home=${alternative_bundlefolder}</arg>
<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-25T23:31:53.981931" elapsed="0.003971">Variable '${alternative_bundlefolder}' not found. Did you mean:
    ${ALTERNATIVE_BUNDLEFOLDER_PARENT}</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-25T23:31:53.987120" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:53.986745" elapsed="0.000436"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:53.986727" elapsed="0.000477"/>
</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-25T23:31:53.987351" elapsed="0.000310"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:31:53.992536" 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-25T23:31:53.992037" elapsed="0.000526"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-25T23:31:53.992808" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:53.992641" elapsed="0.000207"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:53.992619" elapsed="0.000250"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:31:53.993292" 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-25T23:31:53.993002" elapsed="0.000315"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-25T23:31:53.993729" level="INFO">${reference} = controller_akka1_txt_Start_Older_Odl</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-25T23:31:53.993460" elapsed="0.000296"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-25T23:31:53.994072" level="INFO">${reference} = controller_akka1_txt_start_older_odl</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-25T23:31:53.993901" elapsed="0.000195"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:53.994578" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_start_older_odl"
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-25T23:31:53.994234" elapsed="0.000371"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:53.995066" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_start_older_odl&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-25T23:31:53.994762" elapsed="0.000331"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-25T23:31:53.995683" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_start_older_odl"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_start_older_odl&amp;order=bug_status"

Variable '${alternative_bundlefolder}' not found. Did you mean:
    ${ALTERNATIVE_BUNDLEFOLDER_PARENT}</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-25T23:31:53.995238" elapsed="0.000510"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:53.996172" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_start_older_odl"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_start_older_odl&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-25T23:31:53.995887" elapsed="0.000332"/>
</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-25T23:31:53.991747" elapsed="0.004525"/>
</kw>
<status status="PASS" start="2026-04-25T23:31:53.986525" elapsed="0.009795"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-25T23:31:53.986187" elapsed="0.010173"/>
</kw>
<doc>Start older ODL on background.</doc>
<tag>1node</tag>
<tag>carpeople</tag>
<status status="FAIL" start="2026-04-25T23:31:53.931546" elapsed="0.064849">... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_start_older_odl"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_start_older_odl&amp;order=bug_status"

Variable '${alternative_bundlefolder}' not found. Did you mean:
    ${ALTERNATIVE_BUNDLEFOLDER_PARENT}</status>
</test>
<test id="s1-t5" name="Add_Data" line="127">
<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-25T23:31:53.999877" elapsed="0.000206"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-25T23:31:53.999602" 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-25T23:31:54.001088" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.000982" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.000964" elapsed="0.000191"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-25T23:31:54.005784" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.005662" elapsed="0.000167"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.005645" elapsed="0.000206"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.006802" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:31:54.006412" elapsed="0.000417"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.007266" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:31:54.006976" elapsed="0.000315"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-25T23:31:54.007335" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:31:54.007521" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-25T23:31:54.006059" elapsed="0.001487"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-25T23:31:54.013073" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.012967" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.012949" 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-25T23:31:54.014186" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.014083" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.014066" elapsed="0.000186"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:31:54.014629" level="INFO">${karaf_connection_index} = 13</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:31:54.014380" elapsed="0.000275"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.015009" level="INFO">${current_connection_index} = 7</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:54.014824" elapsed="0.000210"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.015775" 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-25T23:31:54.015520" elapsed="0.000814">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-25T23:31:54.016442" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-25T23:31:54.016487" 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-25T23:31:54.015177" elapsed="0.001333"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.017239" 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-25T23:31:54.017011" elapsed="0.000722">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-25T23:31:54.017840" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-25T23:31:54.017884" 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-25T23:31:54.016665" elapsed="0.001242"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.018620" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Add_Data"</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-25T23:31:54.018184" elapsed="0.000496">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Add_Data"</status>
</kw>
<status status="FAIL" start="2026-04-25T23:31:54.017981" elapsed="0.000826">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Add_Data"</status>
</branch>
<status status="FAIL" start="2026-04-25T23:31:54.017963" elapsed="0.000878">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Add_Data"</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-25T23:31:54.018993" 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-25T23:31:54.019204" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:54.019077" elapsed="0.000209"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:31:54.019061" elapsed="0.000251"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-25T23:31:54.019345" 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">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:54.021489" elapsed="0.000221"/>
</kw>
<msg time="2026-04-25T23:31:54.021769" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:54.020578" elapsed="0.001332"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:54.022169" elapsed="0.000044"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:54.022438" elapsed="0.000043"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:54.020108" elapsed="0.002503"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-25T23:31:54.019598" elapsed="0.003061"/>
</kw>
<arg>${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-25T23:31:54.013790" elapsed="0.008968">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Add_Data"</status>
</kw>
<msg time="2026-04-25T23:31:54.022858" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-25T23:31:54.022900" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Add_Data"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:31:54.013275" elapsed="0.009648"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-25T23:31:54.023103" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.022997" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.022980" elapsed="0.000186"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-25T23:31:54.023988" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.023885" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.023867" elapsed="0.000186"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.024299" level="INFO">index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-25T23:31:54.024398" level="INFO">${current_ssh_connection_object} = index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-25T23:31:54.024188" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.024836" level="INFO">{1: 13}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:54.024560" elapsed="0.000320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.025259" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:54.025016" 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-25T23:31:54.025798" elapsed="0.000222"/>
</kw>
<msg time="2026-04-25T23:31:54.026116" level="INFO">${status} = PASS</msg>
<msg time="2026-04-25T23:31:54.026160" level="INFO">${old_connection_index} = 13</msg>
<var>${status}</var>
<var>${old_connection_index}</var>
<arg>Get From Dictionary</arg>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:31:54.025443" elapsed="0.000739"/>
</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-25T23:31:54.026971" elapsed="0.000229"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.028244" 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-25T23:31:54.027854" elapsed="0.001358">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-25T23:31:54.027353" elapsed="0.001952"/>
</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-25T23:31:54.029931" elapsed="0.000169"/>
</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-25T23:31:54.029464" elapsed="0.000707"/>
</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-25T23:31:54.026459" elapsed="0.003759"/>
</kw>
<status status="PASS" start="2026-04-25T23:31:54.026256" elapsed="0.004011"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.026238" elapsed="0.004053"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:31:54.031058" level="INFO">${ip_address} = 10.30.171.166</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:31:54.030798" elapsed="0.000286"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-25T23:31:54.031178" elapsed="0.000031"/>
</return>
<msg time="2026-04-25T23:31:54.031331" level="INFO">${odl_ip} = 10.30.171.166</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-25T23:31:54.030479" elapsed="0.000877"/>
</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-25T23:31:54.031496" elapsed="0.000487"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.032249" level="INFO">index=14
host=10.30.171.166
alias=None
port=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-25T23:31:54.032347" level="INFO">${karaf_connection_object} = index=14
host=10.30.171.166
alias=None
port=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-25T23:31:54.032145" 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-25T23:31:54.032508" elapsed="0.002155"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.035086" level="INFO">Logging into '10.30.171.166:8101' as 'karaf'.</msg>
<msg time="2026-04-25T23:31:54.035998" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</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-25T23:31:54.034831" elapsed="0.001530">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</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">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:54.040113" elapsed="0.000247"/>
</kw>
<msg time="2026-04-25T23:31:54.040478" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:54.039317" 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="NOT RUN" start="2026-04-25T23:31:54.040717" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:54.040868" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:54.037128" elapsed="0.003819"/>
</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-25T23:31:54.036618" elapsed="0.004374"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-25T23:31:54.023576" elapsed="0.017496">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</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-25T23:31:54.041392" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-25T23:31:54.041464" 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-25T23:31:54.012621" elapsed="0.028945">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</status>
</kw>
<msg time="2026-04-25T23:31:54.041668" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-25T23:31:54.041729" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:31:54.008045" elapsed="0.033708"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:54.042074" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:54.041828" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.041810" elapsed="0.000339"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-25T23:31:54.007863" elapsed="0.034308"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-25T23:31:54.007599" elapsed="0.034602"/>
</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-25T23:31:54.005312" elapsed="0.036944"/>
</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-25T23:31:54.000679" elapsed="0.041632"/>
</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-25T23:31:54.000275" elapsed="0.042081"/>
</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-25T23:31:53.997318" elapsed="0.045089"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.043054" level="INFO">${command} = python replace_cars.py --segment-size=10000 --iterations=1000 --move-per-iter=1000</msg>
<var>${command}</var>
<arg>python ${PYTHON_UTILITY_FILENAME} --segment-size=${SEGMENT_SIZE} --iterations=${ITERATIONS} --move-per-iter=${MOVE_PER_ITER}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-25T23:31:54.042585" elapsed="0.000495"/>
</kw>
<kw name="Execute_Command_Should_Pass" owner="SSHKeywords">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Execute_Command_Passes" owner="SSHKeywords">
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.044972" level="INFO">Executing command 'python replace_cars.py --segment-size=10000 --iterations=1000 --move-per-iter=1000'.</msg>
<msg time="2026-04-25T23:31:54.210566" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-25T23:31:54.211024" level="INFO">${stdout} = </msg>
<msg time="2026-04-25T23:31:54.211191" level="INFO">${stderr} = Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 169, in _new_conn
    conn = connection.create_connection(
  File "/usr/lib/python3/dist-packages...</msg>
<msg time="2026-04-25T23:31:54.211302" level="INFO">${rc} = 1</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-25T23:31:54.044787" elapsed="0.166571"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Should Be Empty" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.214211" level="INFO">Length is 3870.</msg>
<msg time="2026-04-25T23:31:54.214608" level="FAIL">'Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 169, in _new_conn
    conn = connection.create_connection(
  File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 96, in create_connection
    raise err
  File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 86, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 700, in urlopen
    httplib_response = self._make_request(
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 395, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 234, in request
    super(HTTPConnection, self).request(method, url, body=body, headers=headers)
  File "/usr/lib/python3.10/http/client.py", line 1303, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/lib/python3.10/http/client.py", line 1349, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.10/http/client.py", line 1298, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.10/http/client.py", line 1058, in _send_output
    self.send(msg)
  File "/usr/lib/python3.10/http/client.py", line 996, in send
    self.connect()
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 200, in connect
    conn = self._new_conn()
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 181, in _new_conn
    raise NewConnectionError(
urllib3.exceptions.NewConnectionError: &lt;urllib3.connection.HTTPConnection object at 0x7f1ae0545630&gt;: Failed to establish a new connection: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 439, in send
    resp = conn.urlopen(
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 756, in urlopen
    retries = retries.increment(
  File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 576, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='127.0.0.1', port=8181): Max retries exceeded with url: /rests/data/car:cars (Caused by NewConnectionError('&lt;urllib3.connection.HTTPConnection object at 0x7f1ae0545630&gt;: Failed to establish a new connection: [Errno 111] Connection refused'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/jenkins/replace_cars.py", line 101, in &lt;module&gt;
    main()
  File "/home/jenkins/replace_cars.py", line 93, in main
    response = session.put(url=url, auth=auth, headers=headers, data=data)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 604, in put
    return self.request('PUT', url, data=data, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 544, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 657, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 516, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=8181): Max retries exceeded with url: /rests/data/car:cars (Caused by NewConnectionError('&lt;urllib3.connection.HTTPConnection object at 0x7f1ae0545630&gt;: Failed to establish a new connection: [Errno 111] Connection refused'))' should be empty.</msg>
<arg>${stderr}</arg>
<doc>Verifies that the given item is empty.</doc>
<status status="FAIL" start="2026-04-25T23:31:54.212887" elapsed="0.002009">'Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 169, in _new_conn
    conn = connection.create_connection(
  File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 96, in create_connection
    raise err
  File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 86, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 700, in urlopen
    httplib_response = self._make_request(
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 395, in _make_request
    [ Message content over the limit has been removed. ]
  File "/home/jenkins/replace_cars.py", line 101, in &lt;module&gt;
    main()
  File "/home/jenkins/replace_cars.py", line 93, in main
    response = session.put(url=url, auth=auth, headers=headers, data=data)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 604, in put
    return self.request('PUT', url, data=data, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 544, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 657, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 516, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=8181): Max retries exceeded with url: /rests/data/car:cars (Caused by NewConnectionError('&lt;urllib3.connection.HTTPConnection object at 0x7f1ae0545630&gt;: Failed to establish a new connection: [Errno 111] Connection refused'))' should be empty.</status>
</kw>
<msg time="2026-04-25T23:31:54.215183" level="INFO">${emptiness_status} = FAIL</msg>
<msg time="2026-04-25T23:31:54.215288" level="INFO">${result} = 'Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 169, in _new_conn
    conn = connection.create_connection(
  File "/usr/lib/python3/dist-package...</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-25T23:31:54.211923" elapsed="0.003506"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.216943" level="INFO">${success} = False</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-25T23:31:54.215856" elapsed="0.001150"/>
</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-25T23:31:54.219717" level="INFO"/>
<arg>${stdout}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:54.219082" elapsed="0.000740"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.220899" level="INFO">Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 169, in _new_conn
    conn = connection.create_connection(
  File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 96, in create_connection
    raise err
  File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 86, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 700, in urlopen
    httplib_response = self._make_request(
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 395, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 234, in request
    super(HTTPConnection, self).request(method, url, body=body, headers=headers)
  File "/usr/lib/python3.10/http/client.py", line 1303, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/lib/python3.10/http/client.py", line 1349, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.10/http/client.py", line 1298, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.10/http/client.py", line 1058, in _send_output
    self.send(msg)
  File "/usr/lib/python3.10/http/client.py", line 996, in send
    self.connect()
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 200, in connect
    conn = self._new_conn()
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 181, in _new_conn
    raise NewConnectionError(
urllib3.exceptions.NewConnectionError: &lt;urllib3.connection.HTTPConnection object at 0x7f1ae0545630&gt;: Failed to establish a new connection: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 439, in send
    resp = conn.urlopen(
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 756, in urlopen
    retries = retries.increment(
  File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 576, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='127.0.0.1', port=8181): Max retries exceeded with url: /rests/data/car:cars (Caused by NewConnectionError('&lt;urllib3.connection.HTTPConnection object at 0x7f1ae0545630&gt;: Failed to establish a new connection: [Errno 111] Connection refused'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/jenkins/replace_cars.py", line 101, in &lt;module&gt;
    main()
  File "/home/jenkins/replace_cars.py", line 93, in main
    response = session.put(url=url, auth=auth, headers=headers, data=data)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 604, in put
    return self.request('PUT', url, data=data, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 544, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 657, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 516, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=8181): Max retries exceeded with url: /rests/data/car:cars (Caused by NewConnectionError('&lt;urllib3.connection.HTTPConnection object at 0x7f1ae0545630&gt;: Failed to establish a new connection: [Errno 111] Connection refused'))</msg>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:54.220162" elapsed="0.000836"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.221378" level="INFO">1</msg>
<arg>${rc}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:54.221140" 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-25T23:31:54.218077" elapsed="0.003403"/>
</kw>
<status status="PASS" start="2026-04-25T23:31:54.217207" elapsed="0.004311"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.217153" elapsed="0.004396"/>
</if>
<if>
<branch type="IF" condition="${return_success_only}">
<return>
<value>${success}</value>
<status status="NOT RUN" start="2026-04-25T23:31:54.221724" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.221603" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.221587" elapsed="0.000208"/>
</if>
<if>
<branch type="IF" condition="${success}">
<return>
<value>${stdout}</value>
<status status="NOT RUN" start="2026-04-25T23:31:54.221931" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.221844" elapsed="0.000133"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.221830" elapsed="0.000167"/>
</if>
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.222536" level="FAIL">Got rc: 1 or stderr was not empty: Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 169, in _new_conn
    conn = connection.create_connection(
  File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 96, in create_connection
    raise err
  File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 86, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 700, in urlopen
    httplib_response = self._make_request(
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 395, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 234, in request
    super(HTTPConnection, self).request(method, url, body=body, headers=headers)
  File "/usr/lib/python3.10/http/client.py", line 1303, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "/usr/lib/python3.10/http/client.py", line 1349, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.10/http/client.py", line 1298, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "/usr/lib/python3.10/http/client.py", line 1058, in _send_output
    self.send(msg)
  File "/usr/lib/python3.10/http/client.py", line 996, in send
    self.connect()
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 200, in connect
    conn = self._new_conn()
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 181, in _new_conn
    raise NewConnectionError(
urllib3.exceptions.NewConnectionError: &lt;urllib3.connection.HTTPConnection object at 0x7f1ae0545630&gt;: Failed to establish a new connection: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 439, in send
    resp = conn.urlopen(
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 756, in urlopen
    retries = retries.increment(
  File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 576, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='127.0.0.1', port=8181): Max retries exceeded with url: /rests/data/car:cars (Caused by NewConnectionError('&lt;urllib3.connection.HTTPConnection object at 0x7f1ae0545630&gt;: Failed to establish a new connection: [Errno 111] Connection refused'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/jenkins/replace_cars.py", line 101, in &lt;module&gt;
    main()
  File "/home/jenkins/replace_cars.py", line 93, in main
    response = session.put(url=url, auth=auth, headers=headers, data=data)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 604, in put
    return self.request('PUT', url, data=data, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 544, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 657, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 516, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=8181): Max retries exceeded with url: /rests/data/car:cars (Caused by NewConnectionError('&lt;urllib3.connection.HTTPConnection object at 0x7f1ae0545630&gt;: Failed to establish a new connection: [Errno 111] Connection refused'))</msg>
<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="FAIL" start="2026-04-25T23:31:54.222124" elapsed="0.000547">Got rc: 1 or stderr was not empty: Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 169, in _new_conn
    conn = connection.create_connection(
  File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 96, in create_connection
    raise err
  File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 86, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 700, in urlopen
    httplib_response = self._make_request(
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 395, in _make_request
    [ Message content over the limit has been removed. ]
Traceback (most recent call last):
  File "/home/jenkins/replace_cars.py", line 101, in &lt;module&gt;
    main()
  File "/home/jenkins/replace_cars.py", line 93, in main
    response = session.put(url=url, auth=auth, headers=headers, data=data)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 604, in put
    return self.request('PUT', url, data=data, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 544, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 657, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 516, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=8181): Max retries exceeded with url: /rests/data/car:cars (Caused by NewConnectionError('&lt;urllib3.connection.HTTPConnection object at 0x7f1ae0545630&gt;: Failed to establish a new connection: [Errno 111] Connection refused'))</status>
</kw>
<arg>${command}</arg>
<arg>return_success_only=False</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</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="FAIL" start="2026-04-25T23:31:54.044200" elapsed="0.178660">Got rc: 1 or stderr was not empty: Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 169, in _new_conn
    conn = connection.create_connection(
  File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 96, in create_connection
    raise err
  File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 86, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 700, in urlopen
    httplib_response = self._make_request(
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 395, in _make_request
    [ Message content over the limit has been removed. ]
Traceback (most recent call last):
  File "/home/jenkins/replace_cars.py", line 101, in &lt;module&gt;
    main()
  File "/home/jenkins/replace_cars.py", line 93, in main
    response = session.put(url=url, auth=auth, headers=headers, data=data)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 604, in put
    return self.request('PUT', url, data=data, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 544, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 657, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 516, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=8181): Max retries exceeded with url: /rests/data/car:cars (Caused by NewConnectionError('&lt;urllib3.connection.HTTPConnection object at 0x7f1ae0545630&gt;: Failed to establish a new connection: [Errno 111] Connection refused'))</status>
</kw>
<msg time="2026-04-25T23:31:54.222932" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Execute_Command_Passes</arg>
<arg>${command}</arg>
<arg>return_success_only=False</arg>
<arg>log_on_success=${log_on_success}</arg>
<arg>log_on_failure=${log_on_failure}</arg>
<arg>stderr_must_be_empty=${stderr_must_be_empty}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="FAIL" start="2026-04-25T23:31:54.043675" elapsed="0.179305"/>
</kw>
<arg>${command}</arg>
<arg>stderr_must_be_empty=True</arg>
<doc>A wrapper for Execute_Command_Passes with return_success_only=False
Also, log_on_success defaults to True (but is customizable, unlike return_success_only)..</doc>
<status status="FAIL" start="2026-04-25T23:31:54.043269" elapsed="0.179849">Got rc: 1 or stderr was not empty: Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 169, in _new_conn
    conn = connection.create_connection(
  File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 96, in create_connection
    raise err
  File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 86, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 700, in urlopen
    httplib_response = self._make_request(
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 395, in _make_request
    [ Message content over the limit has been removed. ]
Traceback (most recent call last):
  File "/home/jenkins/replace_cars.py", line 101, in &lt;module&gt;
    main()
  File "/home/jenkins/replace_cars.py", line 93, in main
    response = session.put(url=url, auth=auth, headers=headers, data=data)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 604, in put
    return self.request('PUT', url, data=data, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 544, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 657, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 516, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=8181): Max retries exceeded with url: /rests/data/car:cars (Caused by NewConnectionError('&lt;urllib3.connection.HTTPConnection object at 0x7f1ae0545630&gt;: 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-25T23:31:54.224464" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:54.224078" elapsed="0.000475"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.224060" 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-25T23:31:54.224746" elapsed="0.000309"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.229903" 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-25T23:31:54.229457" elapsed="0.000473"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-25T23:31:54.230141" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.230002" elapsed="0.000178"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.229984" elapsed="0.000217"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.230622" 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-25T23:31:54.230332" elapsed="0.000316"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-25T23:31:54.231077" level="INFO">${reference} = controller_akka1_txt_Add_Data</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-25T23:31:54.230810" elapsed="0.000293"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-25T23:31:54.231418" level="INFO">${reference} = controller_akka1_txt_add_data</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-25T23:31:54.231247" elapsed="0.000196"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.231941" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_add_data"
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-25T23:31:54.231580" elapsed="0.000390"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.232410" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_add_data&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-25T23:31:54.232109" elapsed="0.000329"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.233039" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_add_data"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_add_data&amp;order=bug_status"

Got rc: 1 or stderr was not empty: Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 169, in _new_conn
    conn = connection.create_connection(
  File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 96, in create_connection
    raise err
  File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 86, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 700, in urlopen
    httplib_response = self._make_request(
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 395, in _make_request
    [ Message content over the limit has been removed. ]
Traceback (most recent call last):
  File "/home/jenkins/replace_cars.py", line 101, in &lt;module&gt;
    main()
  File "/home/jenkins/replace_cars.py", line 93, in main
    response = session.put(url=url, auth=auth, headers=headers, data=data)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 604, in put
    return self.request('PUT', url, data=data, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 544, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 657, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 516, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=8181): Max retries exceeded with url: /rests/data/car:cars (Caused by NewConnectionError('&lt;urllib3.connection.HTTPConnection object at 0x7f1ae0545630&gt;: 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-25T23:31:54.232576" elapsed="0.000530"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.233541" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_add_data"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_add_data&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-25T23:31:54.233244" elapsed="0.000344"/>
</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-25T23:31:54.229167" elapsed="0.004475"/>
</kw>
<status status="PASS" start="2026-04-25T23:31:54.223865" elapsed="0.009847"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-25T23:31:54.223469" elapsed="0.010287"/>
</kw>
<doc>Put car data to config datastore of older ODL.</doc>
<tag>1node</tag>
<tag>carpeople</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-25T23:31:53.996777" elapsed="0.237019">... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_add_data"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_add_data&amp;order=bug_status"

Got rc: 1 or stderr was not empty: Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connection.py", line 169, in _new_conn
    conn = connection.create_connection(
  File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 96, in create_connection
    raise err
  File "/usr/lib/python3/dist-packages/urllib3/util/connection.py", line 86, in create_connection
    sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 700, in urlopen
    httplib_response = self._make_request(
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 395, in _make_request
    [ Message content over the limit has been removed. ]
Traceback (most recent call last):
  File "/home/jenkins/replace_cars.py", line 101, in &lt;module&gt;
    main()
  File "/home/jenkins/replace_cars.py", line 93, in main
    response = session.put(url=url, auth=auth, headers=headers, data=data)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 604, in put
    return self.request('PUT', url, data=data, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 544, in request
    resp = self.send(prep, **send_kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py", line 657, in send
    r = adapter.send(request, **kwargs)
  File "/usr/lib/python3/dist-packages/requests/adapters.py", line 516, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='127.0.0.1', port=8181): Max retries exceeded with url: /rests/data/car:cars (Caused by NewConnectionError('&lt;urllib3.connection.HTTPConnection object at 0x7f1ae0545630&gt;: Failed to establish a new connection: [Errno 111] Connection refused'))</status>
</test>
<test id="s1-t6" name="Remember_Data" line="134">
<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-25T23:31:54.237343" elapsed="0.000204"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-25T23:31:54.237094" elapsed="0.000508"/>
</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-25T23:31:54.238563" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.238455" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.238436" elapsed="0.000193"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-25T23:31:54.243245" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.243141" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.243124" elapsed="0.000187"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.244281" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:31:54.243896" elapsed="0.000411"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.244789" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:31:54.244456" elapsed="0.000358"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-25T23:31:54.244859" elapsed="0.000030"/>
</return>
<msg time="2026-04-25T23:31:54.245011" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-25T23:31:54.243521" elapsed="0.001513"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-25T23:31:54.250247" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.250128" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.250110" 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-25T23:31:54.251372" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.251258" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.251241" elapsed="0.000197"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:31:54.251869" 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-25T23:31:54.251570" elapsed="0.000325"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.252239" level="INFO">${current_connection_index} = 7</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:54.252044" elapsed="0.000220"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.253021" 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-25T23:31:54.252770" elapsed="0.002583">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-25T23:31:54.255464" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-25T23:31:54.255509" 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-25T23:31:54.252409" elapsed="0.003122"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.256276" 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-25T23:31:54.256035" elapsed="0.000839">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-25T23:31:54.256989" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-25T23:31:54.257033" 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-25T23:31:54.255704" elapsed="0.001352"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.257836" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Remember_Data"</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-25T23:31:54.257335" elapsed="0.000563">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Remember_Data"</status>
</kw>
<status status="FAIL" start="2026-04-25T23:31:54.257130" elapsed="0.000833">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Remember_Data"</status>
</branch>
<status status="FAIL" start="2026-04-25T23:31:54.257111" elapsed="0.000884">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Remember_Data"</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-25T23:31:54.258141" 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-25T23:31:54.258350" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:54.258223" elapsed="0.000228"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:31:54.258208" elapsed="0.000269"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-25T23:31:54.258510" 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">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:54.260715" elapsed="0.000231"/>
</kw>
<msg time="2026-04-25T23:31:54.261004" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:54.259775" elapsed="0.001371"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:54.261404" elapsed="0.000045"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:54.261674" elapsed="0.000061"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:54.259281" elapsed="0.002584"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-25T23:31:54.258791" elapsed="0.003121"/>
</kw>
<arg>${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-25T23:31:54.250967" elapsed="0.011025">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Remember_Data"</status>
</kw>
<msg time="2026-04-25T23:31:54.262090" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-25T23:31:54.262132" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Remember_Data"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:31:54.250449" elapsed="0.011705"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-25T23:31:54.262333" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.262229" elapsed="0.000146"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.262210" elapsed="0.000186"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-25T23:31:54.263173" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.263071" elapsed="0.000146"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.263053" elapsed="0.000185"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.263496" level="INFO">index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-25T23:31:54.263597" level="INFO">${current_ssh_connection_object} = index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-25T23:31:54.263373" elapsed="0.000250"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.264041" level="INFO">{1: 14}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:54.263785" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.264461" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:54.264222" 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-25T23:31:54.265017" elapsed="0.000210"/>
</kw>
<msg time="2026-04-25T23:31:54.265323" level="INFO">${status} = PASS</msg>
<msg time="2026-04-25T23:31:54.265368" 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-25T23:31:54.264645" elapsed="0.000744"/>
</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-25T23:31:54.266170" elapsed="0.000227"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.267273" 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-25T23:31:54.267019" elapsed="0.001410">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-25T23:31:54.266550" elapsed="0.001973"/>
</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-25T23:31:54.269177" elapsed="0.000174"/>
</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-25T23:31:54.268685" elapsed="0.000738"/>
</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-25T23:31:54.265664" elapsed="0.003804"/>
</kw>
<status status="PASS" start="2026-04-25T23:31:54.265462" elapsed="0.004054"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.265444" elapsed="0.004096"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:31:54.270315" level="INFO">${ip_address} = 10.30.171.166</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:31:54.270053" elapsed="0.000288"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-25T23:31:54.270421" elapsed="0.000030"/>
</return>
<msg time="2026-04-25T23:31:54.270572" level="INFO">${odl_ip} = 10.30.171.166</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-25T23:31:54.269747" elapsed="0.000848"/>
</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-25T23:31:54.270753" elapsed="0.000421"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.271431" level="INFO">index=15
host=10.30.171.166
alias=None
port=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-25T23:31:54.271527" level="INFO">${karaf_connection_object} = index=15
host=10.30.171.166
alias=None
port=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-25T23:31:54.271328" elapsed="0.000225"/>
</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-25T23:31:54.271710" elapsed="0.002127"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.274246" level="INFO">Logging into '10.30.171.166:8101' as 'karaf'.</msg>
<msg time="2026-04-25T23:31:54.275228" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</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-25T23:31:54.273987" elapsed="0.001611">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</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">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:54.279365" elapsed="0.000249"/>
</kw>
<msg time="2026-04-25T23:31:54.279764" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:54.278624" elapsed="0.001218"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:54.279988" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:54.280137" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:54.276403" elapsed="0.003814"/>
</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-25T23:31:54.275910" elapsed="0.004352"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-25T23:31:54.262788" elapsed="0.017554">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</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-25T23:31:54.280658" elapsed="0.000042"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-25T23:31:54.280750" 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-25T23:31:54.249800" elapsed="0.031052">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</status>
</kw>
<msg time="2026-04-25T23:31:54.280967" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-25T23:31:54.281009" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:31:54.245410" elapsed="0.035622"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:54.281338" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:54.281105" elapsed="0.000286"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.281088" elapsed="0.000325"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-25T23:31:54.245277" elapsed="0.036159"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-25T23:31:54.245096" elapsed="0.036371"/>
</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-25T23:31:54.242790" elapsed="0.038730"/>
</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-25T23:31:54.238174" elapsed="0.043399"/>
</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-25T23:31:54.237758" elapsed="0.043858"/>
</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-25T23:31:54.234838" elapsed="0.046828"/>
</kw>
<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-25T23:31:54.326395" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:31:54.326003" elapsed="0.000420"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:31:54.327190" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:31:54.326913" elapsed="0.000341">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:31:54.327346" 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-25T23:31:54.326574" elapsed="0.000796"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.327917" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:31:54.327521" elapsed="0.000422"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:31:54.328229" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:31:54.328401" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:31:54.328092" elapsed="0.000334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.328827" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:54.328568" 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-25T23:31:54.329803" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:54.329536" elapsed="0.000311"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.330269" 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-25T23:31:54.329994" elapsed="0.000301"/>
</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-25T23:31:54.330607" 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-25T23:31:54.330816" 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-25T23:31:54.330975" elapsed="0.000019"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:31:54.330487" elapsed="0.000543"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:31:54.330345" elapsed="0.000713"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:31:54.331101" elapsed="0.000028"/>
</return>
<msg time="2026-04-25T23:31:54.331257" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:31:54.329232" elapsed="0.002048"/>
</kw>
<status status="PASS" start="2026-04-25T23:31:54.328936" elapsed="0.002376"/>
</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-25T23:31:54.331467" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:54.331336" elapsed="0.000184"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.328918" elapsed="0.002622"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.332107" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:31:54.331666" elapsed="0.000467"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:31:54.332181" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:31:54.325343" elapsed="0.006958"/>
</kw>
<msg time="2026-04-25T23:31:54.332353" 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-25T23:31:54.313132" elapsed="0.019266"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:54.344289" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:54.356001" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:54.367667" 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-25T23:31:54.367861" 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-25T23:31:54.368029" 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-25T23:31:54.368376" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:54.368246" elapsed="0.000185"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:31:54.368232" elapsed="0.000221"/>
</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-25T23:31:54.368578" 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-25T23:31:54.368748" 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-25T23:31:54.368904" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:31:54.368204" elapsed="0.000752"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:31:54.368105" elapsed="0.000876"/>
</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-25T23:31:54.369113" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:31:54.369188" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:31:54.369296" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:31:54.308994" elapsed="0.060327"/>
</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-25T23:31:54.370540" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:31:54.370298" elapsed="0.000305">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:31:54.370709" 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-25T23:31:54.369977" 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-25T23:31:54.371039" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:54.370804" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.371550" 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-25T23:31:54.371264" elapsed="0.000311"/>
</kw>
<status status="PASS" start="2026-04-25T23:31:54.371117" elapsed="0.000492"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.370787" elapsed="0.000842"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.373910" 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-25T23:31:54.371815" elapsed="0.002121"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:31:54.373987" elapsed="0.000028"/>
</return>
<msg time="2026-04-25T23:31:54.374136" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:31:54.369650" elapsed="0.004510"/>
</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-25T23:31:54.375332" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:31:54.375094" elapsed="0.000299">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:31:54.375486" 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-25T23:31:54.374772" elapsed="0.000737"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:31:54.375728" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-25T23:31:54.375578" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.375561" elapsed="0.000248"/>
</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-25T23:31:54.375942" 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-25T23:31:54.376098" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:31:54.376162" elapsed="0.000014"/>
</return>
<msg time="2026-04-25T23:31:54.378146" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:31:54.374449" elapsed="0.003723"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.379520" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:54.379275" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.379961" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:54.379722" 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-25T23:31:54.384493" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.166', port=8181): Max retries exceeded with url: /rests/data/car:cars (Caused by NewConnectionError("HTTPConnection(host='10.30.171.166', 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-25T23:31:54.382046" elapsed="0.006587">ConnectionError: HTTPConnectionPool(host='10.30.171.166', port=8181): Max retries exceeded with url: /rests/data/car:cars (Caused by NewConnectionError("HTTPConnection(host='10.30.171.166', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-25T23:31:54.380069" elapsed="0.008666">ConnectionError: HTTPConnectionPool(host='10.30.171.166', port=8181): Max retries exceeded with url: /rests/data/car:cars (Caused by NewConnectionError("HTTPConnection(host='10.30.171.166', 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-25T23:31:54.388914" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:54.388770" elapsed="0.000209"/>
</branch>
<status status="FAIL" start="2026-04-25T23:31:54.380052" elapsed="0.008950">ConnectionError: HTTPConnectionPool(host='10.30.171.166', port=8181): Max retries exceeded with url: /rests/data/car:cars (Caused by NewConnectionError("HTTPConnection(host='10.30.171.166', 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-25T23:31:54.389359" elapsed="0.000024"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:31:54.389513" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.389451" elapsed="0.000106"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:31:54.389434" elapsed="0.000144"/>
</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-25T23:31:54.389742" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:31:54.389820" elapsed="0.000015"/>
</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-25T23:31:54.378471" elapsed="0.011451">ConnectionError: HTTPConnectionPool(host='10.30.171.166', port=8181): Max retries exceeded with url: /rests/data/car:cars (Caused by NewConnectionError("HTTPConnection(host='10.30.171.166', 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-25T23:31:54.390028" elapsed="0.000016"/>
</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-25T23:31:54.291349" elapsed="0.098772">ConnectionError: HTTPConnectionPool(host='10.30.171.166', port=8181): Max retries exceeded with url: /rests/data/car:cars (Caused by NewConnectionError("HTTPConnection(host='10.30.171.166', 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_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-25T23:31:54.390376" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:54.390212" elapsed="0.000234"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:31:54.390196" elapsed="0.000273"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:31:54.390500" elapsed="0.000013"/>
</return>
<var>${data}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:31:54.285383" elapsed="0.105208">ConnectionError: HTTPConnectionPool(host='10.30.171.166', port=8181): Max retries exceeded with url: /rests/data/car:cars (Caused by NewConnectionError("HTTPConnection(host='10.30.171.166', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>\${data_before}</arg>
<arg>${data}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:54.390775" elapsed="0.000023"/>
</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-25T23:31:54.392060" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:54.391669" elapsed="0.000452"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.391616" elapsed="0.000528"/>
</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-25T23:31:54.392275" elapsed="0.000313"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.397606" 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-25T23:31:54.397172" elapsed="0.000461"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-25T23:31:54.397865" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.397723" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.397703" elapsed="0.000231"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.398374" 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-25T23:31:54.398079" elapsed="0.000320"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-25T23:31:54.398824" level="INFO">${reference} = controller_akka1_txt_Remember_Data</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-25T23:31:54.398544" elapsed="0.000306"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-25T23:31:54.399171" level="INFO">${reference} = controller_akka1_txt_remember_data</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-25T23:31:54.398996" elapsed="0.000200"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.399673" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_remember_data"
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-25T23:31:54.399336" elapsed="0.000380"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.400164" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_remember_data&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-25T23:31:54.399860" elapsed="0.000331"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.400779" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_remember_data"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_remember_data&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.166', port=8181): Max retries exceeded with url: /rests/data/car:cars (Caused by NewConnectionError("HTTPConnection(host='10.30.171.166', 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-25T23:31:54.400331" elapsed="0.000500"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.401298" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_remember_data"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_remember_data&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-25T23:31:54.401005" 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-25T23:31:54.396879" elapsed="0.004520"/>
</kw>
<status status="PASS" start="2026-04-25T23:31:54.391428" elapsed="0.010030"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-25T23:31:54.391084" elapsed="0.010418"/>
</kw>
<doc>Get and save the stored data for later comparison.</doc>
<tag>1node</tag>
<tag>carpeople</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-25T23:31:54.234305" elapsed="0.167250">... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_remember_data"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_remember_data&amp;order=bug_status"

ConnectionError: HTTPConnectionPool(host='10.30.171.166', port=8181): Max retries exceeded with url: /rests/data/car:cars (Caused by NewConnectionError("HTTPConnection(host='10.30.171.166', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</test>
<test id="s1-t7" name="Validate_Data" line="139">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-25T23:31:54.404737" elapsed="0.000204"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-25T23:31:54.404476" elapsed="0.000520"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-25T23:31:54.405967" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.405858" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.405840" 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-25T23:31:54.410738" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.410600" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.410578" elapsed="0.000229"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.411793" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:31:54.411382" elapsed="0.000452"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.412279" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:31:54.411985" elapsed="0.000320"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-25T23:31:54.412349" elapsed="0.000030"/>
</return>
<msg time="2026-04-25T23:31:54.412502" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-25T23:31:54.411019" elapsed="0.001507"/>
</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-25T23:31:54.418006" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.417896" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.417877" 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-25T23:31:54.419148" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.419043" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.419026" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:31:54.419606" level="INFO">${karaf_connection_index} = 15</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:31:54.419347" elapsed="0.000285"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.420069" level="INFO">${current_connection_index} = 7</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:54.419867" elapsed="0.000228"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.420831" 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-25T23:31:54.420565" elapsed="0.000710">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-25T23:31:54.421387" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-25T23:31:54.421431" 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-25T23:31:54.420243" elapsed="0.001212"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.422235" 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-25T23:31:54.421994" elapsed="0.000751">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-25T23:31:54.422888" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-25T23:31:54.422932" 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-25T23:31:54.421608" elapsed="0.001348"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.423706" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Validate_Data"</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-25T23:31:54.423241" elapsed="0.000527">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Validate_Data"</status>
</kw>
<status status="FAIL" start="2026-04-25T23:31:54.423035" elapsed="0.000798">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Validate_Data"</status>
</branch>
<status status="FAIL" start="2026-04-25T23:31:54.423013" elapsed="0.000852">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Validate_Data"</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-25T23:31:54.424012" 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-25T23:31:54.424223" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:54.424096" elapsed="0.000178"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:31:54.424079" elapsed="0.000217"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-25T23:31:54.424329" 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">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:54.426524" elapsed="0.000226"/>
</kw>
<msg time="2026-04-25T23:31:54.426807" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:54.425567" elapsed="0.001385"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:54.427216" elapsed="0.000046"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:54.427491" elapsed="0.000043"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:54.425090" elapsed="0.002571"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-25T23:31:54.424571" elapsed="0.003159"/>
</kw>
<arg>${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-25T23:31:54.418745" elapsed="0.009066">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Validate_Data"</status>
</kw>
<msg time="2026-04-25T23:31:54.427911" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-25T23:31:54.427954" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Validate_Data"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:31:54.418218" elapsed="0.009758"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-25T23:31:54.428156" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.428051" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.428033" elapsed="0.000188"/>
</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-25T23:31:54.429189" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.429084" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.429066" elapsed="0.000189"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.429511" level="INFO">index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-25T23:31:54.429613" level="INFO">${current_ssh_connection_object} = index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-25T23:31:54.429395" elapsed="0.000244"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.430084" level="INFO">{1: 15}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:54.429828" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.430505" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:54.430267" elapsed="0.000280"/>
</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-25T23:31:54.431055" elapsed="0.000215"/>
</kw>
<msg time="2026-04-25T23:31:54.431367" level="INFO">${status} = PASS</msg>
<msg time="2026-04-25T23:31:54.431412" level="INFO">${old_connection_index} = 15</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-25T23:31:54.430710" elapsed="0.000724"/>
</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-25T23:31:54.432223" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.433389" 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-25T23:31:54.433132" elapsed="0.001265">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-25T23:31:54.432643" elapsed="0.001851"/>
</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-25T23:31:54.435119" elapsed="0.000174"/>
</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-25T23:31:54.434654" elapsed="0.000712"/>
</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-25T23:31:54.431732" elapsed="0.003679"/>
</kw>
<status status="PASS" start="2026-04-25T23:31:54.431507" elapsed="0.003953"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.431490" elapsed="0.003994"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:31:54.436262" level="INFO">${ip_address} = 10.30.171.166</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:31:54.435999" elapsed="0.000289"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-25T23:31:54.436337" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:31:54.436487" level="INFO">${odl_ip} = 10.30.171.166</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-25T23:31:54.435673" elapsed="0.000837"/>
</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-25T23:31:54.436658" elapsed="0.000470"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.437397" level="INFO">index=16
host=10.30.171.166
alias=None
port=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-25T23:31:54.437496" level="INFO">${karaf_connection_object} = index=16
host=10.30.171.166
alias=None
port=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-25T23:31:54.437291" 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-25T23:31:54.437656" elapsed="0.002193"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.440259" level="INFO">Logging into '10.30.171.166:8101' as 'karaf'.</msg>
<msg time="2026-04-25T23:31:54.441095" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</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-25T23:31:54.440001" elapsed="0.001480">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</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">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:54.445456" elapsed="0.000278"/>
</kw>
<msg time="2026-04-25T23:31:54.445880" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:54.444675" elapsed="0.001286"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:54.446109" elapsed="0.000023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:54.446259" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:54.442295" elapsed="0.004045"/>
</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-25T23:31:54.441793" elapsed="0.004593"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-25T23:31:54.428791" elapsed="0.017674">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</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-25T23:31:54.446812" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-25T23:31:54.446887" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-25T23:31:54.417500" elapsed="0.029489">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</status>
</kw>
<msg time="2026-04-25T23:31:54.447093" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-25T23:31:54.447136" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:31:54.412924" elapsed="0.034235"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:54.447508" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:54.447271" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.447251" elapsed="0.000340"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-25T23:31:54.412791" elapsed="0.034825"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-25T23:31:54.412580" elapsed="0.035066"/>
</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-25T23:31:54.410226" elapsed="0.037494"/>
</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-25T23:31:54.405537" elapsed="0.042240"/>
</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-25T23:31:54.405130" elapsed="0.042692"/>
</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-25T23:31:54.402460" elapsed="0.045414"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.448390" level="INFO">${first_id} = 999001</msg>
<var>${first_id}</var>
<arg>(${ITERATIONS} - 1) * ${MOVE_PER_ITER} + 1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-25T23:31:54.448020" elapsed="0.000397"/>
</kw>
<kw name="Set_Known_Bug_Id" owner="SetupUtils">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.449301" level="INFO">${SetupUtils__Known_Bug_ID} = 5909</msg>
<arg>${SetupUtils__Known_Bug_ID}</arg>
<arg>${id}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-25T23:31:54.448943" elapsed="0.000401"/>
</kw>
<arg>5909</arg>
<doc>Tell the Teardown keywords that any failure from now on is due to the specified known bug.</doc>
<status status="PASS" start="2026-04-25T23:31:54.448611" elapsed="0.000791"/>
</kw>
<kw name="Verify_Response_As_Json_Templated" owner="TemplatedRequests">
<msg time="2026-04-25T23:31:54.453651" level="FAIL">Variable '${data_before}' not found.</msg>
<arg>response=${data_before}</arg>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>base_name=data</arg>
<arg>iterations=${SEGMENT_SIZE}</arg>
<arg>iter_start=${first_id}</arg>
<doc>Resolve expected JSON data, should be equal to provided ${response}.
JSON normalization is used, endlines enabled for readability.</doc>
<status status="FAIL" start="2026-04-25T23:31:54.449592" elapsed="0.004116">Variable '${data_before}' 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">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.455842" 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-25T23:31:54.455342" elapsed="0.000528"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-25T23:31:54.456084" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.455944" elapsed="0.000182"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.455926" elapsed="0.000222"/>
</if>
<kw name="Comment" owner="BuiltIn">
<arg>Jira tickets are {PROJECT}-{NUMBER} while Bugzilla tickets are {NUMBER}</arg>
<doc>Displays the given messages in the log file as keyword arguments.</doc>
<status status="PASS" start="2026-04-25T23:31:54.456295" elapsed="0.000209"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.457384" level="FAIL">'5909' does not contain '-'</msg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-25T23:31:54.457037" elapsed="0.000404">'5909' does not contain '-'</status>
</kw>
<msg time="2026-04-25T23:31:54.457532" level="INFO">${match} = False</msg>
<var>${match}</var>
<arg>Should Contain</arg>
<arg>${number}</arg>
<arg>-</arg>
<doc>Runs the specified keyword and returns the status as a Boolean value.</doc>
<status status="PASS" start="2026-04-25T23:31:54.456652" elapsed="0.000903"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.458080" level="INFO">${bug_url} = https://bugs.opendaylight.org/show_bug.cgi?id=5909</msg>
<var>${bug_url}</var>
<arg>${match}</arg>
<arg>https://jira.opendaylight.org/browse/${number}</arg>
<arg>https://bugs.opendaylight.org/show_bug.cgi?id=${number}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:31:54.457726" elapsed="0.000380"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.458535" level="INFO">${msg} = This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5909</msg>
<var>${msg}</var>
<arg>This test fails due to ${bug_url}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-25T23:31:54.458254" elapsed="0.000308"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.459035" 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-25T23:31:54.458723" elapsed="0.000338"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.459594" level="INFO">Set test message to:
This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5909

Variable '${data_before}' not found.</msg>
<arg>${msg}${newline}${newline}${TEST_MESSAGE}</arg>
<doc>Sets message for the current test case.</doc>
<status status="PASS" start="2026-04-25T23:31:54.459201" elapsed="0.000440"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.460048" level="INFO">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5909</msg>
<arg>${msg}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:54.459796" elapsed="0.000296"/>
</kw>
<if>
<branch type="IF" condition="&quot;${include_bug_in_tags}&quot;==&quot;True&quot;">
<kw name="Set Tags" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.460970" level="INFO">Set tag 'https://bugs.opendaylight.org/show_bug.cgi?id=5909'.</msg>
<arg>${bug_url}</arg>
<doc>Adds given ``tags`` for the current test or all tests in a suite.</doc>
<status status="PASS" start="2026-04-25T23:31:54.460566" elapsed="0.000453"/>
</kw>
<status status="PASS" start="2026-04-25T23:31:54.460338" elapsed="0.000761"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.460139" elapsed="0.000989"/>
</if>
<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="PASS" start="2026-04-25T23:31:54.454972" elapsed="0.006203"/>
</kw>
<status status="PASS" start="2026-04-25T23:31:54.454580" elapsed="0.006628"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.454562" elapsed="0.006668"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Set_Known_Bug_Id" owner="SetupUtils">
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.464350" level="INFO">${SetupUtils__Known_Bug_ID} = </msg>
<arg>${SetupUtils__Known_Bug_ID}</arg>
<arg>${id}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-04-25T23:31:54.463965" elapsed="0.000427"/>
</kw>
<arg>${EMPTY}</arg>
<doc>Tell the Teardown keywords that any failure from now on is due to the specified known bug.</doc>
<status status="PASS" start="2026-04-25T23:31:54.461815" elapsed="0.002635"/>
</kw>
<msg time="2026-04-25T23:31:54.464486" level="INFO">Returning from the enclosing user keyword.</msg>
<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-25T23:31:54.461367" elapsed="0.003177"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<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="NOT RUN" start="2026-04-25T23:31:54.468601" elapsed="0.000027"/>
</kw>
<status status="PASS" start="2026-04-25T23:31:54.454375" elapsed="0.014337"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-25T23:31:54.454031" elapsed="0.014728"/>
</kw>
<doc>Compare the saved data against what the data should look like.</doc>
<tag>1node</tag>
<tag>carpeople</tag>
<tag>critical</tag>
<tag>https://bugs.opendaylight.org/show_bug.cgi?id=5909</tag>
<status status="FAIL" start="2026-04-25T23:31:54.401924" elapsed="0.066871">This test fails due to https://bugs.opendaylight.org/show_bug.cgi?id=5909

Variable '${data_before}' not found.</status>
</test>
<test id="s1-t8" name="Kill_Older_Odl" line="151">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-25T23:31:54.471951" elapsed="0.000223"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-25T23:31:54.471665" elapsed="0.000562"/>
</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-25T23:31:54.473199" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.473080" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.473058" 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-25T23:31:54.477953" elapsed="0.000039"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.477838" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.477820" elapsed="0.000228"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.479043" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:31:54.478638" elapsed="0.000431"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.479520" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:31:54.479226" elapsed="0.000319"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-25T23:31:54.479589" elapsed="0.000030"/>
</return>
<msg time="2026-04-25T23:31:54.479762" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-25T23:31:54.478273" 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-25T23:31:54.485206" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.485098" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.485078" 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-25T23:31:54.486400" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.486282" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.486264" elapsed="0.000204"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:31:54.486875" level="INFO">${karaf_connection_index} = 16</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:31:54.486601" elapsed="0.000300"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.487240" level="INFO">${current_connection_index} = 7</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:54.487052" elapsed="0.000213"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.488013" 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-25T23:31:54.487775" elapsed="0.000731">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-25T23:31:54.488616" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-25T23:31:54.488661" 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-25T23:31:54.487427" elapsed="0.001274"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.489422" 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-25T23:31:54.489186" elapsed="0.000740">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-25T23:31:54.490060" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-25T23:31:54.490110" 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-25T23:31:54.488860" elapsed="0.001275"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.490897" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Kill_Older_Odl"</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-25T23:31:54.490432" elapsed="0.000528">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Kill_Older_Odl"</status>
</kw>
<status status="FAIL" start="2026-04-25T23:31:54.490217" elapsed="0.000812">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Kill_Older_Odl"</status>
</branch>
<status status="FAIL" start="2026-04-25T23:31:54.490196" elapsed="0.000865">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Kill_Older_Odl"</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-25T23:31:54.491214" 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-25T23:31:54.491432" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:54.491300" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:31:54.491283" elapsed="0.000236"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-25T23:31:54.491552" 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">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:54.493728" elapsed="0.000208"/>
</kw>
<msg time="2026-04-25T23:31:54.493994" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:54.492805" elapsed="0.001374"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:54.494451" elapsed="0.000049"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:54.494755" elapsed="0.000046"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:54.492301" elapsed="0.002630"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-25T23:31:54.491812" elapsed="0.003171"/>
</kw>
<arg>${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-25T23:31:54.485938" elapsed="0.009127">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Kill_Older_Odl"</status>
</kw>
<msg time="2026-04-25T23:31:54.495165" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-25T23:31:54.495207" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Kill_Older_Odl"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:31:54.485424" elapsed="0.009806"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-25T23:31:54.495420" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.495309" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.495287" 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-25T23:31:54.496452" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.496346" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.496328" elapsed="0.000191"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.496809" level="INFO">index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-25T23:31:54.496913" level="INFO">${current_ssh_connection_object} = index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-25T23:31:54.496667" elapsed="0.000272"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.497334" level="INFO">{1: 16}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:54.497081" elapsed="0.000296"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.497784" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:54.497516" 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-25T23:31:54.498397" elapsed="0.000237"/>
</kw>
<msg time="2026-04-25T23:31:54.498751" level="INFO">${status} = PASS</msg>
<msg time="2026-04-25T23:31:54.498797" 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-25T23:31:54.498010" 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-25T23:31:54.499590" elapsed="0.000262"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.500778" 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-25T23:31:54.500466" elapsed="0.001293">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-25T23:31:54.500010" elapsed="0.001844"/>
</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-25T23:31:54.502525" elapsed="0.000193"/>
</kw>
<arg>SSHLibrary.Close_Connection</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:31:54.502020" elapsed="0.000777"/>
</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-25T23:31:54.499103" elapsed="0.003739"/>
</kw>
<status status="PASS" start="2026-04-25T23:31:54.498895" elapsed="0.003996"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.498877" elapsed="0.004039"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:31:54.503675" level="INFO">${ip_address} = 10.30.171.166</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:31:54.503413" elapsed="0.000314"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-25T23:31:54.503778" elapsed="0.000031"/>
</return>
<msg time="2026-04-25T23:31:54.503931" level="INFO">${odl_ip} = 10.30.171.166</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-25T23:31:54.503107" elapsed="0.000848"/>
</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-25T23:31:54.504107" elapsed="0.000402"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.504821" level="INFO">index=17
host=10.30.171.166
alias=None
port=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-25T23:31:54.504921" level="INFO">${karaf_connection_object} = index=17
host=10.30.171.166
alias=None
port=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-25T23:31:54.504665" 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-25T23:31:54.505081" elapsed="0.002201"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.507703" level="INFO">Logging into '10.30.171.166:8101' as 'karaf'.</msg>
<msg time="2026-04-25T23:31:54.508975" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</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-25T23:31:54.507433" elapsed="0.002048">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</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">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:54.515032" elapsed="0.000257"/>
</kw>
<msg time="2026-04-25T23:31:54.515410" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:54.514131" elapsed="0.001359"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:54.515643" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:54.515816" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:54.510429" elapsed="0.005470"/>
</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-25T23:31:54.509842" elapsed="0.006112"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-25T23:31:54.495900" elapsed="0.020143">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</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-25T23:31:54.516359" elapsed="0.000075"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-25T23:31:54.516486" 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-25T23:31:54.484752" elapsed="0.031838">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</status>
</kw>
<msg time="2026-04-25T23:31:54.516713" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-25T23:31:54.516759" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:31:54.480136" elapsed="0.036646"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:54.517110" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:54.516858" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.516840" elapsed="0.000347"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-25T23:31:54.480006" elapsed="0.037204"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-25T23:31:54.479840" elapsed="0.037398"/>
</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-25T23:31:54.477462" elapsed="0.039829"/>
</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-25T23:31:54.472783" elapsed="0.044561"/>
</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-25T23:31:54.472363" elapsed="0.045024"/>
</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-25T23:31:54.469600" elapsed="0.047837"/>
</kw>
<kw name="Kill_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-25T23:31:54.522408" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:31:54.521994" elapsed="0.000441"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.522921" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:31:54.522583" elapsed="0.000363"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-25T23:31:54.522991" elapsed="0.000034"/>
</return>
<msg time="2026-04-25T23:31:54.523158" level="INFO">${kill_index_list} = [1]</msg>
<var>${kill_index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-25T23:31:54.521612" elapsed="0.001571"/>
</kw>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.524133" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:31:54.523754" elapsed="0.000406"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.524594" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:31:54.524305" elapsed="0.000314"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-25T23:31:54.524663" elapsed="0.000046"/>
</return>
<msg time="2026-04-25T23:31:54.524835" level="INFO">${index_list} = [1]</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-25T23:31:54.523377" elapsed="0.001482"/>
</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-25T23:31:54.526380" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:31:54.525971" elapsed="0.000435"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.526862" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:31:54.526554" elapsed="0.000333"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-25T23:31:54.526931" elapsed="0.000034"/>
</return>
<msg time="2026-04-25T23:31:54.527088" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-25T23:31:54.525593" elapsed="0.001519"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:31:54.528120" level="INFO">${member_ip} = 10.30.171.166</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:31:54.527860" elapsed="0.000286"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.528917" level="INFO">index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-25T23:31:54.529019" level="INFO">${current_connection} = index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-25T23:31:54.528808" elapsed="0.000237"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:54.561742" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:54.561437" elapsed="0.000385"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.561412" elapsed="0.000438"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.562122" level="INFO">index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-25T23:31:54.562233" level="INFO">${current_ssh_connection} = index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-25T23:31:54.561989" elapsed="0.000270"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.562849" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | awk '{print "kill -9 " $1}' | sh" on remote system "10.30.171.166" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:54.562399" elapsed="0.000500"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.563431" level="INFO">${conn_id} = 18</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-25T23:31:54.563047" elapsed="0.000410"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.564570" level="INFO">Length is 0.</msg>
<msg time="2026-04-25T23:31:54.564648" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-25T23:31:54.564071" elapsed="0.000601"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:54.564868" elapsed="0.000582"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.566895" level="INFO">Logging into '10.30.171.166:22' as 'jenkins'.</msg>
<msg time="2026-04-25T23:31:54.887780" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.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 25 23:31:37 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check 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 25 23:31:43 2026 from 10.30.171.101
[?2004h[jenkins@releng-60306-7-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-25T23:31:54.566260" elapsed="0.321623"/>
</kw>
<msg time="2026-04-25T23:31:54.888028" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:54.565609" elapsed="0.322514"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-25T23:31:54.563665" elapsed="0.324574"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-25T23:31:54.888635" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | awk '{print "kill -9 " $1}' | sh'.</msg>
<msg time="2026-04-25T23:31:54.911280" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-25T23:31:54.911529" level="INFO">${stdout} = </msg>
<msg time="2026-04-25T23:31:54.911624" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-25T23:31:54.888423" elapsed="0.023250"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-25T23:31:54.912061" elapsed="0.000502"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.913557" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:54.912962" elapsed="0.000685"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-25T23:31:54.914123" elapsed="0.000040"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.913846" elapsed="0.000388"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.913797" 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-25T23:31:54.914630" elapsed="0.000093"/>
</return>
<status status="PASS" start="2026-04-25T23:31:54.914400" elapsed="0.000500"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.914367" elapsed="0.000594"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-25T23:31:54.915052" elapsed="0.000035"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:54.920704" elapsed="0.000341"/>
</kw>
<msg time="2026-04-25T23:31:54.921186" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:54.919580" elapsed="0.001697"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:54.921483" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:54.921728" elapsed="0.000031"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:54.915757" 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-25T23:31:54.560897" elapsed="0.361074"/>
</kw>
<msg time="2026-04-25T23:31:54.922042" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:54.560276" elapsed="0.361833"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-25T23:31:54.559642" elapsed="0.362573"/>
</kw>
<msg time="2026-04-25T23:31:54.922275" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:54.529190" elapsed="0.393147"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:54.926371" elapsed="0.000145"/>
</kw>
<msg time="2026-04-25T23:31:54.926559" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:54.925767" elapsed="0.000851"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:54.926785" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:54.926942" elapsed="0.000023"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:54.922761" elapsed="0.004308"/>
</kw>
<msg time="2026-04-25T23:31:54.927166" 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-25T23:31:54.528404" elapsed="0.398786"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.927601" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:54.927355" elapsed="0.000287"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-25T23:31:54.927704" 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-25T23:31:54.527459" elapsed="0.400381"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-25T23:31:54.527297" elapsed="0.400581"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-25T23:31:54.527169" elapsed="0.400746"/>
</for>
<arg>command=${NODE_KILL_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-25T23:31:54.525049" elapsed="0.402922"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:31:54.928433" level="INFO">${updated_index_list} = [1]</msg>
<var>${updated_index_list}</var>
<arg>@{index_list}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:31:54.928114" elapsed="0.000344"/>
</kw>
<kw name="Remove Values From List" owner="Collections">
<arg>${updated_index_list}</arg>
<arg>@{kill_index_list}</arg>
<doc>Removes all occurrences of given ``values`` from ``list``.</doc>
<status status="PASS" start="2026-04-25T23:31:54.928597" elapsed="0.000232"/>
</kw>
<if>
<branch type="IF" condition="not ${confirm}">
<return>
<value>${updated_index_list}</value>
<status status="NOT RUN" start="2026-04-25T23:31:54.929002" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:54.928898" elapsed="0.000146"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:54.928881" elapsed="0.000185"/>
</if>
<kw name="Sleep" owner="BuiltIn">
<msg time="2026-04-25T23:31:55.929717" level="INFO">Slept 1 second.</msg>
<msg time="2026-04-25T23:31:55.929870" level="INFO">Kill -9 closes open files, which may take longer than ssh overhead, but not long enough to warrant WUKS.</msg>
<arg>1s</arg>
<arg>Kill -9 closes open files, which may take longer than ssh overhead, but not long enough to warrant WUKS.</arg>
<doc>Pauses the test executed for the given time.</doc>
<status status="PASS" start="2026-04-25T23:31:54.929193" elapsed="1.000817"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Verify_Karaf_Is_Not_Running_On_Member" owner="ClusterManagement">
<kw name="Count_Running_Karafs_On_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:55.933589" level="INFO">${command} = ps axf | grep org.apache.karaf | grep -v grep | wc -l</msg>
<var>${command}</var>
<arg>${NODE_KARAF_COUNT_COMMAND}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-25T23:31:55.932821" elapsed="0.000990"/>
</kw>
<kw name="Run_Bash_Command_On_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:31:55.936512" level="INFO">${member_ip} = 10.30.171.166</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:31:55.935152" elapsed="0.001420"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:55.938132" level="INFO">index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-25T23:31:55.938233" level="INFO">${current_connection} = index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-25T23:31:55.937992" 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-25T23:31:55.940982" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:55.940617" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:55.940594" elapsed="0.000574"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:55.941431" level="INFO">index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-25T23:31:55.941551" level="INFO">${current_ssh_connection} = index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-25T23:31:55.941322" elapsed="0.000256"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:55.942553" level="INFO">Attempting to execute command "ps axf | grep org.apache.karaf | grep -v grep | wc -l" on remote system "10.30.171.166" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:55.941735" elapsed="0.000884"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:55.943438" 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-25T23:31:55.942828" elapsed="0.000636"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-25T23:31:55.944744" level="INFO">Length is 0.</msg>
<msg time="2026-04-25T23:31:55.944931" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-25T23:31:55.944205" 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-25T23:31:55.945243" elapsed="0.000597"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-25T23:31:55.947316" level="INFO">Logging into '10.30.171.166:22' as 'jenkins'.</msg>
<msg time="2026-04-25T23:31:56.260194" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.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 25 23:31:37 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check 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 25 23:31:54 2026 from 10.30.171.101
[?2004h[jenkins@releng-60306-7-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-25T23:31:55.946928" elapsed="0.313521"/>
</kw>
<msg time="2026-04-25T23:31:56.260562" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:55.946128" elapsed="0.314634"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-25T23:31:55.943669" elapsed="0.317337"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-25T23:31:56.261589" level="INFO">Executing command 'ps axf | grep org.apache.karaf | grep -v grep | wc -l'.</msg>
<msg time="2026-04-25T23:31:56.284798" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-25T23:31:56.285140" level="INFO">${stdout} = 0</msg>
<msg time="2026-04-25T23:31:56.285238" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-25T23:31:56.261265" elapsed="0.024023"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-25T23:31:56.285636" elapsed="0.000545"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.287732" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:56.286577" 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-25T23:31:56.288541" elapsed="0.000056"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:56.288017" elapsed="0.000697"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.287960" 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-25T23:31:56.289198" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-25T23:31:56.288899" elapsed="0.000434"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.288863" elapsed="0.000523"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-25T23:31:56.289461" elapsed="0.000032"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:56.295768" elapsed="0.000412"/>
</kw>
<msg time="2026-04-25T23:31:56.296298" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:56.294092" elapsed="0.002393"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:56.296823" elapsed="0.000269"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:56.297383" elapsed="0.000075"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:56.290204" elapsed="0.007411"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-25T23:31:55.940085" elapsed="0.357686"/>
</kw>
<msg time="2026-04-25T23:31:56.297850" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:55.939440" elapsed="0.358481"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-25T23:31:55.938926" elapsed="0.359105"/>
</kw>
<msg time="2026-04-25T23:31:56.298089" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:55.938409" elapsed="0.359743"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:56.301636" elapsed="0.000158"/>
</kw>
<msg time="2026-04-25T23:31:56.301836" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:56.301091" elapsed="0.000806"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:56.302042" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:56.302189" elapsed="0.000020"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:56.298543" elapsed="0.003724"/>
</kw>
<msg time="2026-04-25T23:31:56.302358" 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-25T23:31:55.937062" elapsed="0.365322"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.302965" level="INFO">0</msg>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:56.302546" elapsed="0.000464"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-25T23:31:56.303054" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:31:56.303207" 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-25T23:31:55.934241" elapsed="0.368990"/>
</kw>
<return>
<value>${count}</value>
<status status="PASS" start="2026-04-25T23:31:56.303278" elapsed="0.000025"/>
</return>
<msg time="2026-04-25T23:31:56.303422" 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-25T23:31:55.932022" elapsed="0.371424"/>
</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-25T23:31:56.303593" elapsed="0.000416"/>
</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-25T23:31:55.931087" elapsed="0.372984"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-25T23:31:55.930618" elapsed="0.373487"/>
</iter>
<var>${index}</var>
<value>@{kill_index_list}</value>
<status status="PASS" start="2026-04-25T23:31:55.930192" elapsed="0.373951"/>
</for>
<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-25T23:31:56.307224" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:31:56.306833" elapsed="0.000418"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.307758" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:31:56.307400" elapsed="0.000385"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-25T23:31:56.307830" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:31:56.307983" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-25T23:31:56.306428" elapsed="0.001580"/>
</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-25T23:31:56.309052" level="INFO">${member_ip} = 10.30.171.166</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:31:56.308780" elapsed="0.000297"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:56.310038" level="INFO">index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-25T23:31:56.310141" level="INFO">${current_connection} = index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-25T23:31:56.309677" 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-25T23:31:56.312732" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:56.312461" elapsed="0.000327"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.312443" elapsed="0.000369"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:56.313054" level="INFO">index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-25T23:31:56.313153" level="INFO">${current_ssh_connection} = index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-25T23:31:56.312948" elapsed="0.000231"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.313710" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.166" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:56.313319" elapsed="0.000439"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:56.314286" level="INFO">${conn_id} = 20</msg>
<var>${conn_id}</var>
<arg>${system}</arg>
<arg>prompt=${prompt}</arg>
<arg>timeout=${prompt_timeout}</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="PASS" start="2026-04-25T23:31:56.313902" elapsed="0.000409"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.315442" level="INFO">Length is 0.</msg>
<msg time="2026-04-25T23:31:56.315520" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-25T23:31:56.314933" elapsed="0.000610"/>
</kw>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>${pwd_length} &gt; 0</arg>
<arg>SSHLibrary.Login</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:56.315717" elapsed="0.000682"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-25T23:31:56.317772" level="INFO">Logging into '10.30.171.166:22' as 'jenkins'.</msg>
<msg time="2026-04-25T23:31:56.640617" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.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 25 23:31:37 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check 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 25 23:31:56 2026 from 10.30.171.101
[?2004h[jenkins@releng-60306-7-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-25T23:31:56.317201" elapsed="0.323638"/>
</kw>
<msg time="2026-04-25T23:31:56.641011" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:56.316579" elapsed="0.324548"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-25T23:31:56.314516" elapsed="0.326732"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-25T23:31:56.641786" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-25T23:31:56.654275" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-25T23:31:56.654529" level="INFO">${stdout} = </msg>
<msg time="2026-04-25T23:31:56.654626" 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-25T23:31:56.641498" elapsed="0.013335"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-25T23:31:56.655194" elapsed="0.000649"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.657055" 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-25T23:31:56.656244" elapsed="0.000879"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-25T23:31:56.657448" elapsed="0.000024"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:56.657246" elapsed="0.000272"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.657207" elapsed="0.000342"/>
</if>
<if>
<branch type="IF" condition="&quot;${return_stderr}&quot;!=&quot;True&quot;">
<return>
<value>${stdout}</value>
<status status="PASS" start="2026-04-25T23:31:56.657799" elapsed="0.000037"/>
</return>
<status status="PASS" start="2026-04-25T23:31:56.657625" elapsed="0.000257"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.657604" elapsed="0.000311"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-25T23:31:56.657961" elapsed="0.000020"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:56.663407" elapsed="0.000374"/>
</kw>
<msg time="2026-04-25T23:31:56.663927" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:56.662102" elapsed="0.001919"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:56.664659" elapsed="0.000063"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:56.664919" elapsed="0.000030"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:56.658725" 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-25T23:31:56.311936" elapsed="0.353193"/>
</kw>
<msg time="2026-04-25T23:31:56.665182" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:56.311367" elapsed="0.353864"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-25T23:31:56.310837" elapsed="0.354472"/>
</kw>
<msg time="2026-04-25T23:31:56.665350" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:56.310315" elapsed="0.355079"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:56.668563" elapsed="0.000169"/>
</kw>
<msg time="2026-04-25T23:31:56.668776" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:56.668023" 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="NOT RUN" start="2026-04-25T23:31:56.668985" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:56.669133" elapsed="0.000019"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:56.665672" elapsed="0.003540"/>
</kw>
<msg time="2026-04-25T23:31:56.669302" 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-25T23:31:56.309283" elapsed="0.360044"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.669957" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:56.669678" elapsed="0.000321"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-25T23:31:56.670047" 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-25T23:31:56.308370" elapsed="0.361804"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-25T23:31:56.308202" elapsed="0.362011"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-25T23:31:56.308065" elapsed="0.362188"/>
</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-25T23:31:56.304346" elapsed="0.365969"/>
</kw>
<return>
<value>${updated_index_list}</value>
<status status="PASS" start="2026-04-25T23:31:56.670357" elapsed="0.000026"/>
</return>
<doc>If the list is empty, kill all ODL instances. Otherwise, kill members based on ${kill_index_list}
If ${confirm} is True, sleep 1 second and verify killed 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="PASS" start="2026-04-25T23:31:54.517771" elapsed="2.152712"/>
</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-25T23:31:56.671811" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:56.671411" elapsed="0.000463"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.671394" elapsed="0.000505"/>
</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-25T23:31:56.672033" elapsed="0.000313"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.677169" 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-25T23:31:56.676746" elapsed="0.000450"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-25T23:31:56.677418" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-25T23:31:56.677272" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.677254" elapsed="0.000244"/>
</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-25T23:31:56.677635" 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-25T23:31:56.677815" 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-25T23:31:56.677976" 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-25T23:31:56.678134" 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-25T23:31:56.678287" 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-25T23:31:56.678440" 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-25T23:31:56.678592" 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-25T23:31:56.676438" elapsed="0.002230"/>
</kw>
<status status="PASS" start="2026-04-25T23:31:56.671200" elapsed="0.007538"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-25T23:31:56.670789" elapsed="0.007993"/>
</kw>
<doc>Kill the older ODL immediatelly.</doc>
<tag>1node</tag>
<tag>carpeople</tag>
<tag>critical</tag>
<status status="PASS" start="2026-04-25T23:31:54.469124" elapsed="2.209699"/>
</test>
<test id="s1-t9" name="Transfer_Persisted_Data" line="155">
<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-25T23:31:56.682613" elapsed="0.000250"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-25T23:31:56.682355" elapsed="0.000566"/>
</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-25T23:31:56.683903" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:56.683793" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.683775" 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-25T23:31:56.688707" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:56.688585" elapsed="0.000171"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.688567" elapsed="0.000211"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.689774" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:31:56.689366" elapsed="0.000436"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.690254" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:31:56.689954" elapsed="0.000325"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-25T23:31:56.690325" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:31:56.690480" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-25T23:31:56.688994" elapsed="0.001511"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_With_Retry_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-25T23:31:56.695823" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:56.695654" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.695635" elapsed="0.000260"/>
</if>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-25T23:31:56.697022" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:56.696915" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.696897" elapsed="0.000192"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:31:56.697490" level="INFO">${karaf_connection_index} = 17</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:31:56.697224" elapsed="0.000293"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:56.697887" level="INFO">${current_connection_index} = 7</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:56.697666" elapsed="0.000247"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-25T23:31:56.698642" 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-25T23:31:56.698386" elapsed="0.001122">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-25T23:31:56.699628" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-25T23:31:56.699673" 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-25T23:31:56.698062" elapsed="0.001656"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-25T23:31:56.700453" 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-25T23:31:56.700214" elapsed="0.000774">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-25T23:31:56.701097" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-25T23:31:56.701142" 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-25T23:31:56.699879" elapsed="0.001286"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.701926" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Transfer_Persisted_Data"</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-25T23:31:56.701451" elapsed="0.000537">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Transfer_Persisted_Data"</status>
</kw>
<status status="FAIL" start="2026-04-25T23:31:56.701242" elapsed="0.000818">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Transfer_Persisted_Data"</status>
</branch>
<status status="FAIL" start="2026-04-25T23:31:56.701221" elapsed="0.000872">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Transfer_Persisted_Data"</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-25T23:31:56.702245" 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-25T23:31:56.702460" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:56.702332" elapsed="0.000180"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:31:56.702315" elapsed="0.000219"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-25T23:31:56.702567" 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">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:56.704825" elapsed="0.000253"/>
</kw>
<msg time="2026-04-25T23:31:56.705136" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:56.703831" elapsed="0.001450"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:56.705544" elapsed="0.000097"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:56.705902" elapsed="0.000079"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:56.703331" elapsed="0.002784"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-25T23:31:56.702836" elapsed="0.003326"/>
</kw>
<arg>${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-25T23:31:56.696589" elapsed="0.009660">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Transfer_Persisted_Data"</status>
</kw>
<msg time="2026-04-25T23:31:56.706349" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-25T23:31:56.706392" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Transfer_Persisted_Data"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:31:56.696034" elapsed="0.010381"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-25T23:31:56.706597" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:56.706489" elapsed="0.000183"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.706470" elapsed="0.000253"/>
</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-25T23:31:56.707543" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:56.707436" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.707418" elapsed="0.000193"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:56.707892" level="INFO">index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-25T23:31:56.707995" level="INFO">${current_ssh_connection_object} = index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-25T23:31:56.707770" elapsed="0.000252"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.708416" level="INFO">{1: 17}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:56.708161" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.708886" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:56.708626" elapsed="0.000329"/>
</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-25T23:31:56.709446" elapsed="0.000214"/>
</kw>
<msg time="2026-04-25T23:31:56.709779" level="INFO">${status} = PASS</msg>
<msg time="2026-04-25T23:31:56.709824" level="INFO">${old_connection_index} = 17</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-25T23:31:56.709102" elapsed="0.000744"/>
</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-25T23:31:56.710614" elapsed="0.000277"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-25T23:31:56.711937" 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-25T23:31:56.711522" elapsed="0.001461">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-25T23:31:56.711073" elapsed="0.002005"/>
</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-25T23:31:56.713707" elapsed="0.000174"/>
</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-25T23:31:56.713238" elapsed="0.000714"/>
</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-25T23:31:56.710127" elapsed="0.003870"/>
</kw>
<status status="PASS" start="2026-04-25T23:31:56.709921" elapsed="0.004123"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.709903" elapsed="0.004166"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:31:56.715410" level="INFO">${ip_address} = 10.30.171.166</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:31:56.715146" elapsed="0.000290"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-25T23:31:56.715485" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:31:56.715635" level="INFO">${odl_ip} = 10.30.171.166</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-25T23:31:56.714831" elapsed="0.000829"/>
</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-25T23:31:56.715822" elapsed="0.000419"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:56.716503" level="INFO">index=21
host=10.30.171.166
alias=None
port=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-25T23:31:56.716614" level="INFO">${karaf_connection_object} = index=21
host=10.30.171.166
alias=None
port=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-25T23:31:56.716398" 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-25T23:31:56.716791" elapsed="0.002157"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-25T23:31:56.719359" level="INFO">Logging into '10.30.171.166:8101' as 'karaf'.</msg>
<msg time="2026-04-25T23:31:56.720276" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</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-25T23:31:56.719101" elapsed="0.001581">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</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">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:56.724560" elapsed="0.000317"/>
</kw>
<msg time="2026-04-25T23:31:56.724995" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:56.723883" elapsed="0.001267"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:56.725303" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:56.725453" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:56.721475" elapsed="0.004059"/>
</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-25T23:31:56.720982" elapsed="0.004598"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-25T23:31:56.707109" elapsed="0.018628">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</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-25T23:31:56.726095" elapsed="0.000025"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-25T23:31:56.726169" elapsed="0.000016"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="FAIL" start="2026-04-25T23:31:56.695321" elapsed="0.030950">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</status>
</kw>
<msg time="2026-04-25T23:31:56.726376" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-25T23:31:56.726419" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:31:56.690893" elapsed="0.035549"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:56.726773" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:56.726518" elapsed="0.000308"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.726500" elapsed="0.000349"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-25T23:31:56.690760" elapsed="0.036112"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-25T23:31:56.690563" elapsed="0.036339"/>
</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-25T23:31:56.688182" elapsed="0.038773"/>
</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-25T23:31:56.683486" elapsed="0.043526"/>
</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-25T23:31:56.683071" elapsed="0.043987"/>
</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-25T23:31:56.679933" elapsed="0.047176"/>
</kw>
<kw name="Execute_Command_Should_Pass" owner="SSHKeywords">
<msg time="2026-04-25T23:31:56.731344" level="FAIL">Variable '${alternative_bundlefolder}' not found. Did you mean:
    ${ALTERNATIVE_BUNDLEFOLDER_PARENT}</msg>
<var>${stdout}</var>
<arg>cp -rv "${alternative_bundlefolder}/snapshots" "${WORKSPACE}/${BUNDLEFOLDER}/" &amp;&amp; cp -rv "${alternative_bundlefolder}/"*journal "${WORKSPACE}/${BUNDLEFOLDER}/"</arg>
<doc>A wrapper for Execute_Command_Passes with return_success_only=False
Also, log_on_success defaults to True (but is customizable, unlike return_success_only)..</doc>
<status status="FAIL" start="2026-04-25T23:31:56.727304" elapsed="0.004080">Variable '${alternative_bundlefolder}' not found. Did you mean:
    ${ALTERNATIVE_BUNDLEFOLDER_PARENT}</status>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${stdout}</arg>
<doc>Makes a variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:56.731571" 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-25T23:31:56.732838" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:56.732446" elapsed="0.000454"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.732429" elapsed="0.000494"/>
</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-25T23:31:56.733055" elapsed="0.000309"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.738212" 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-25T23:31:56.737728" elapsed="0.000511"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-25T23:31:56.738453" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:56.738313" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.738295" elapsed="0.000219"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.739026" 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-25T23:31:56.738684" elapsed="0.000369"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-25T23:31:56.739459" level="INFO">${reference} = controller_akka1_txt_Transfer_Persisted_Data</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-25T23:31:56.739197" elapsed="0.000287"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-25T23:31:56.739823" level="INFO">${reference} = controller_akka1_txt_transfer_persisted_data</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-25T23:31:56.739630" elapsed="0.000218"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.740329" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_transfer_persisted_data"
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-25T23:31:56.739990" elapsed="0.000365"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.740852" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_transfer_persisted_data&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-25T23:31:56.740497" elapsed="0.000383"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.741455" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_transfer_persisted_data"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_transfer_persisted_data&amp;order=bug_status"

Variable '${alternative_bundlefolder}' not found. Did you mean:
    ${ALTERNATIVE_BUNDLEFOLDER_PARENT}</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-25T23:31:56.741023" elapsed="0.000482"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.741954" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_transfer_persisted_data"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_transfer_persisted_data&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-25T23:31:56.741646" elapsed="0.000355"/>
</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-25T23:31:56.737424" elapsed="0.004631"/>
</kw>
<status status="PASS" start="2026-04-25T23:31:56.732243" elapsed="0.009862"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-25T23:31:56.731902" elapsed="0.010244"/>
</kw>
<doc>Move snapshots and (segmented-)journal into the original ODL installation.</doc>
<tag>1node</tag>
<tag>carpeople</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-25T23:31:56.679344" elapsed="0.062837">... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_transfer_persisted_data"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_transfer_persisted_data&amp;order=bug_status"

Variable '${alternative_bundlefolder}' not found. Did you mean:
    ${ALTERNATIVE_BUNDLEFOLDER_PARENT}</status>
</test>
<test id="s1-t10" name="Check_Snapshot_With_Transferred_Persisted_Data" line="162">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-25T23:31:56.745415" elapsed="0.000204"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-25T23:31:56.745164" elapsed="0.000510"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Log_Testcase_Start_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-25T23:31:56.746626" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:56.746517" elapsed="0.000155"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.746498" 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-25T23:31:56.751641" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:56.751495" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.751478" elapsed="0.000254"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.752805" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:31:56.752309" elapsed="0.000526"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.753293" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:31:56.752999" elapsed="0.000320"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-25T23:31:56.753363" elapsed="0.000028"/>
</return>
<msg time="2026-04-25T23:31:56.753514" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-25T23:31:56.751948" 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-25T23:31:56.758812" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:56.758702" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.758667" 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-25T23:31:56.759931" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:56.759827" elapsed="0.000149"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.759809" elapsed="0.000189"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:31:56.760383" level="INFO">${karaf_connection_index} = 21</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:31:56.760128" elapsed="0.000281"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:56.760804" level="INFO">${current_connection_index} = 7</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:56.760554" elapsed="0.000278"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-25T23:31:56.761539" 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-25T23:31:56.761304" elapsed="0.000693">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-25T23:31:56.762107" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-25T23:31:56.762150" 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-25T23:31:56.760982" elapsed="0.001191"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-25T23:31:56.762896" 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-25T23:31:56.762649" elapsed="0.000729">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-25T23:31:56.763486" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-25T23:31:56.763529" 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-25T23:31:56.762327" elapsed="0.001224"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.764424" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Check_Snapshot_With_Transferred_Persisted_Data"</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-25T23:31:56.763848" elapsed="0.000637">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Check_Snapshot_With_Transferred_Persisted_Data"</status>
</kw>
<status status="FAIL" start="2026-04-25T23:31:56.763624" elapsed="0.000926">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Check_Snapshot_With_Transferred_Persisted_Data"</status>
</branch>
<status status="FAIL" start="2026-04-25T23:31:56.763605" elapsed="0.000978">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Check_Snapshot_With_Transferred_Persisted_Data"</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-25T23:31:56.764787" 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-25T23:31:56.765010" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:56.764879" elapsed="0.000187"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:31:56.764863" elapsed="0.000225"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-25T23:31:56.765121" 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">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:56.767251" elapsed="0.000251"/>
</kw>
<msg time="2026-04-25T23:31:56.767581" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:56.766347" elapsed="0.001401"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:56.768013" elapsed="0.000080"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:56.768379" elapsed="0.000048"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:56.765876" elapsed="0.002683"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-25T23:31:56.765363" elapsed="0.003245"/>
</kw>
<arg>${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-25T23:31:56.759515" elapsed="0.009191">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Check_Snapshot_With_Transferred_Persisted_Data"</status>
</kw>
<msg time="2026-04-25T23:31:56.768833" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-25T23:31:56.768878" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Check_Snapshot_With_Transferred_Persisted_Data"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:31:56.759019" elapsed="0.009882"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-25T23:31:56.769118" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:56.769010" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.768991" 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-25T23:31:56.769968" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:56.769865" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.769847" elapsed="0.000187"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:56.770283" level="INFO">index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-25T23:31:56.770385" level="INFO">${current_ssh_connection_object} = index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-25T23:31:56.770172" elapsed="0.000239"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.770824" level="INFO">{1: 21}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:56.770552" elapsed="0.000318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.771251" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:56.771010" 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-25T23:31:56.771799" elapsed="0.000212"/>
</kw>
<msg time="2026-04-25T23:31:56.772108" level="INFO">${status} = PASS</msg>
<msg time="2026-04-25T23:31:56.772153" level="INFO">${old_connection_index} = 21</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-25T23:31:56.771440" elapsed="0.000735"/>
</kw>
<if>
<branch type="IF" condition="'${status}'=='PASS'">
<kw name="Run Keywords" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${old_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:56.773016" elapsed="0.000231"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-25T23:31:56.774151" 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-25T23:31:56.773894" elapsed="0.001226">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-25T23:31:56.773403" elapsed="0.001811"/>
</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-25T23:31:56.775835" elapsed="0.000171"/>
</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-25T23:31:56.775372" elapsed="0.000708"/>
</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-25T23:31:56.772452" elapsed="0.003673"/>
</kw>
<status status="PASS" start="2026-04-25T23:31:56.772249" elapsed="0.003925"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.772232" elapsed="0.003965"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:31:56.776995" level="INFO">${ip_address} = 10.30.171.166</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:31:56.776707" elapsed="0.000314"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-25T23:31:56.777069" elapsed="0.000030"/>
</return>
<msg time="2026-04-25T23:31:56.777217" level="INFO">${odl_ip} = 10.30.171.166</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-25T23:31:56.776385" elapsed="0.000857"/>
</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-25T23:31:56.777386" elapsed="0.000446"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:56.780180" level="INFO">index=22
host=10.30.171.166
alias=None
port=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-25T23:31:56.780288" level="INFO">${karaf_connection_object} = index=22
host=10.30.171.166
alias=None
port=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-25T23:31:56.777992" elapsed="0.002322"/>
</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-25T23:31:56.780455" elapsed="0.002193"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-25T23:31:56.783082" level="INFO">Logging into '10.30.171.166:8101' as 'karaf'.</msg>
<msg time="2026-04-25T23:31:56.783914" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</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-25T23:31:56.782823" elapsed="0.001459">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</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">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:56.788105" elapsed="0.000298"/>
</kw>
<msg time="2026-04-25T23:31:56.788567" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:56.787362" elapsed="0.001282"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:56.788916" elapsed="0.000042"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:56.789106" elapsed="0.000022"/>
</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-25T23:31:56.785108" elapsed="0.004093"/>
</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-25T23:31:56.784542" elapsed="0.004711"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-25T23:31:56.769556" elapsed="0.019780">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</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-25T23:31:56.789658" elapsed="0.000047"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-25T23:31:56.789758" 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-25T23:31:56.758316" elapsed="0.031547">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</status>
</kw>
<msg time="2026-04-25T23:31:56.789968" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-25T23:31:56.790012" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:31:56.753910" elapsed="0.036127"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:56.790356" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:56.790116" elapsed="0.000295"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.790098" elapsed="0.000336"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-25T23:31:56.753778" elapsed="0.036679"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-25T23:31:56.753592" elapsed="0.036896"/>
</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-25T23:31:56.751138" elapsed="0.039404"/>
</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-25T23:31:56.746234" elapsed="0.044361"/>
</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-25T23:31:56.745832" elapsed="0.044806"/>
</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-25T23:31:56.742904" elapsed="0.047806"/>
</kw>
<kw name="Should Contain" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.794639" level="FAIL">Variable '${stdout}' not found.</msg>
<arg>${stdout}</arg>
<arg>/snapshots/</arg>
<arg>msg='Snapshot file was not created.'</arg>
<doc>Fails if ``container`` does not contain ``item`` one or more times.</doc>
<status status="FAIL" start="2026-04-25T23:31:56.790859" elapsed="0.003865">Variable '${stdout}' 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-25T23:31:56.796455" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:56.795925" elapsed="0.000616"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.795900" elapsed="0.000675"/>
</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-25T23:31:56.796806" elapsed="0.000485"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.802509" 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-25T23:31:56.802025" elapsed="0.000512"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-25T23:31:56.802771" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:56.802610" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.802591" elapsed="0.000243"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.803272" 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-25T23:31:56.802970" elapsed="0.000328"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-25T23:31:56.803761" level="INFO">${reference} = controller_akka1_txt_Check_Snapshot_With_Transferred_Persisted_Data</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-25T23:31:56.803443" elapsed="0.000346"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-25T23:31:56.804114" level="INFO">${reference} = controller_akka1_txt_check_snapshot_with_transferred_persisted_data</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-25T23:31:56.803937" elapsed="0.000203"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.804623" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_check_snapshot_with_transferred_persisted_data"
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-25T23:31:56.804282" elapsed="0.000367"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.805196" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_check_snapshot_with_transferred_persisted_data&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-25T23:31:56.804809" elapsed="0.000417"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.805832" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_check_snapshot_with_transferred_persisted_data"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_check_snapshot_with_transferred_persisted_data&amp;order=bug_status"

Variable '${stdout}' 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-25T23:31:56.805371" elapsed="0.000511"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.806317" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_check_snapshot_with_transferred_persisted_data"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_check_snapshot_with_transferred_persisted_data&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-25T23:31:56.806025" 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-25T23:31:56.801729" elapsed="0.004691"/>
</kw>
<status status="PASS" start="2026-04-25T23:31:56.795613" elapsed="0.010857"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-25T23:31:56.795135" elapsed="0.011375"/>
</kw>
<doc>Fail if no snapshot file was created.</doc>
<tag>1node</tag>
<tag>carpeople</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-25T23:31:56.742401" elapsed="0.064145">... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_check_snapshot_with_transferred_persisted_data"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_check_snapshot_with_transferred_persisted_data&amp;order=bug_status"

Variable '${stdout}' not found.</status>
</test>
<test id="s1-t11" name="Start_Newer_Odl" line="166">
<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-25T23:31:56.810031" elapsed="0.000205"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-25T23:31:56.809780" elapsed="0.000509"/>
</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-25T23:31:56.811247" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:56.811139" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.811121" elapsed="0.000192"/>
</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-25T23:31:56.816044" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:56.815935" elapsed="0.000156"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.815917" elapsed="0.000195"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.817093" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:31:56.816677" elapsed="0.000443"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.817556" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:31:56.817266" elapsed="0.000315"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-25T23:31:56.817623" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:31:56.817795" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-25T23:31:56.816322" 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-25T23:31:56.823197" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:56.823092" elapsed="0.000152"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.823074" 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-25T23:31:56.824352" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:56.824246" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.824228" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:31:56.824824" level="INFO">${karaf_connection_index} = 22</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:31:56.824548" elapsed="0.000302"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:56.825214" level="INFO">${current_connection_index} = 7</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:56.824997" elapsed="0.000243"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-25T23:31:56.825962" 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-25T23:31:56.825725" elapsed="0.000673">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-25T23:31:56.826505" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-25T23:31:56.826549" 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-25T23:31:56.825388" elapsed="0.001183"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-25T23:31:56.827294" 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-25T23:31:56.827064" elapsed="0.000727">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-25T23:31:56.827898" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-25T23:31:56.827941" 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-25T23:31:56.826742" elapsed="0.001221"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.828685" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Start_Newer_Odl"</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-25T23:31:56.828245" elapsed="0.000514">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Start_Newer_Odl"</status>
</kw>
<status status="FAIL" start="2026-04-25T23:31:56.828037" elapsed="0.000787">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Start_Newer_Odl"</status>
</branch>
<status status="FAIL" start="2026-04-25T23:31:56.828017" elapsed="0.000838">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Start_Newer_Odl"</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-25T23:31:56.829001" elapsed="0.000034"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:56.829225" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:56.829098" elapsed="0.000178"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:31:56.829082" elapsed="0.000216"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-25T23:31:56.829329" 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">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:56.831467" elapsed="0.000265"/>
</kw>
<msg time="2026-04-25T23:31:56.831789" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:56.830550" elapsed="0.001381"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:56.832249" elapsed="0.000047"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:56.832560" elapsed="0.000043"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:56.830079" elapsed="0.002671"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-25T23:31:56.829569" elapsed="0.003230"/>
</kw>
<arg>${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-25T23:31:56.823953" elapsed="0.008928">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Start_Newer_Odl"</status>
</kw>
<msg time="2026-04-25T23:31:56.832979" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-25T23:31:56.833022" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Start_Newer_Odl"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:31:56.823438" elapsed="0.009629"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-25T23:31:56.833252" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:56.833145" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.833126" 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-25T23:31:56.834459" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:56.834300" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.834277" elapsed="0.000255"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:56.834809" level="INFO">index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-25T23:31:56.834913" level="INFO">${current_ssh_connection_object} = index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-25T23:31:56.834674" elapsed="0.000265"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.835333" level="INFO">{1: 22}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:56.835077" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.835773" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:56.835515" 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-25T23:31:56.836307" elapsed="0.000214"/>
</kw>
<msg time="2026-04-25T23:31:56.836618" level="INFO">${status} = PASS</msg>
<msg time="2026-04-25T23:31:56.836663" level="INFO">${old_connection_index} = 22</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-25T23:31:56.835962" elapsed="0.000739"/>
</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-25T23:31:56.837490" elapsed="0.000263"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-25T23:31:56.838619" 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-25T23:31:56.838361" elapsed="0.001229">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-25T23:31:56.837909" elapsed="0.001789"/>
</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-25T23:31:56.840306" elapsed="0.000173"/>
</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-25T23:31:56.839859" elapsed="0.000692"/>
</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-25T23:31:56.836984" elapsed="0.003612"/>
</kw>
<status status="PASS" start="2026-04-25T23:31:56.836779" elapsed="0.003865"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.836760" elapsed="0.003908"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:31:56.841493" level="INFO">${ip_address} = 10.30.171.166</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:31:56.841226" elapsed="0.000293"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-25T23:31:56.841567" elapsed="0.000030"/>
</return>
<msg time="2026-04-25T23:31:56.841777" level="INFO">${odl_ip} = 10.30.171.166</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-25T23:31:56.840878" elapsed="0.000926"/>
</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-25T23:31:56.841949" elapsed="0.000988"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:56.843204" level="INFO">index=23
host=10.30.171.166
alias=None
port=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-25T23:31:56.843302" level="INFO">${karaf_connection_object} = index=23
host=10.30.171.166
alias=None
port=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-25T23:31:56.843098" 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-25T23:31:56.843463" elapsed="0.002265"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-25T23:31:56.846143" level="INFO">Logging into '10.30.171.166:8101' as 'karaf'.</msg>
<msg time="2026-04-25T23:31:56.846933" level="FAIL">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</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-25T23:31:56.845883" elapsed="0.001416">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</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">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:56.851369" elapsed="0.000299"/>
</kw>
<msg time="2026-04-25T23:31:56.851806" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:56.850612" elapsed="0.001274"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:56.852113" elapsed="0.000048"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:56.852297" elapsed="0.000021"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:56.848075" elapsed="0.004305"/>
</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-25T23:31:56.847560" elapsed="0.004867"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="FAIL" start="2026-04-25T23:31:56.833786" elapsed="0.018760">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</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-25T23:31:56.852888" elapsed="0.000026"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-25T23:31:56.852962" 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-25T23:31:56.822761" elapsed="0.030310">NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</status>
</kw>
<msg time="2026-04-25T23:31:56.853188" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-25T23:31:56.853231" level="INFO">${output} = NoValidConnectionsError: [Errno None] Unable to connect to port 8101 on 10.30.171.166</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:31:56.818171" elapsed="0.035084"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:56.853569" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:56.853332" elapsed="0.000290"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.853313" elapsed="0.000332"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-25T23:31:56.818041" elapsed="0.035627"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-25T23:31:56.817873" elapsed="0.035841"/>
</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-25T23:31:56.815501" elapsed="0.038270"/>
</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-25T23:31:56.810853" elapsed="0.042974"/>
</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-25T23:31:56.810427" elapsed="0.043444"/>
</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-25T23:31:56.807397" elapsed="0.046527"/>
</kw>
<kw name="Start_Members_From_List_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.865829" 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-25T23:31:56.865438" elapsed="0.000418"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.866371" 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-25T23:31:56.866015" elapsed="0.000383"/>
</kw>
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-04-25T23:31:56.866836" level="INFO">${epoch} = 1777159916.86676</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-25T23:31:56.866549" elapsed="0.000313"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.867409" level="INFO">${gc_filepath} = /tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1777159916.86676.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-25T23:31:56.867017" elapsed="0.000418"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.867971" level="INFO">${gc_options} = -XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:/tmp/karaf-0.24.0-SNAPSHOT/data/log/gc_1777159916.86676.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-25T23:31:56.867589" elapsed="0.000408"/>
</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-25T23:31:56.869452" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:31:56.869065" elapsed="0.000413"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.869936" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:31:56.869625" elapsed="0.000337"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-25T23:31:56.870006" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:31:56.870159" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-25T23:31:56.868709" elapsed="0.001510"/>
</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-25T23:31:56.871249" level="INFO">${member_ip} = 10.30.171.166</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:31:56.870981" elapsed="0.000294"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:56.871997" level="INFO">index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-25T23:31:56.872099" level="INFO">${current_connection} = index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-25T23:31:56.871889" elapsed="0.000236"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Controller" owner="Utils">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run Command On Remote System" owner="Utils">
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot; and &quot;${return_stderr}&quot;!=&quot;True&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>At least one of {return_stdout} or {return_stderr} args should be set to True</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:56.874826" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:56.874550" elapsed="0.000335"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:56.874531" elapsed="0.000378"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:56.875153" level="INFO">index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-25T23:31:56.875252" level="INFO">${current_ssh_connection} = index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-25T23:31:56.875046" elapsed="0.000233"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.875814" 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_1777159916.86676.log" on remote system "10.30.171.166" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:56.875419" elapsed="0.000442"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:31:56.876364" 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-25T23:31:56.876007" elapsed="0.000382"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-25T23:31:56.877449" level="INFO">Length is 0.</msg>
<msg time="2026-04-25T23:31:56.877526" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-25T23:31:56.876986" 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-25T23:31:56.877745" elapsed="0.000613"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-25T23:31:56.879722" level="INFO">Logging into '10.30.171.166:22' as 'jenkins'.</msg>
<msg time="2026-04-25T23:31:57.191244" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.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 25 23:31:37 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check 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 25 23:31:56 2026 from 10.30.171.101
[?2004h[jenkins@releng-60306-7-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-25T23:31:56.879155" elapsed="0.312260"/>
</kw>
<msg time="2026-04-25T23:31:57.191586" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:56.878522" elapsed="0.313201"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-25T23:31:56.876594" elapsed="0.315254"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-25T23:31:57.192396" 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_1777159916.86676.log'.</msg>
<msg time="2026-04-25T23:31:57.215134" level="INFO">Command exited with return code 0.</msg>
<msg time="2026-04-25T23:31:57.215388" level="INFO">${stdout} = </msg>
<msg time="2026-04-25T23:31:57.215483" level="INFO">${stderr} = </msg>
<var>${stdout}</var>
<var>${stderr}</var>
<arg>${cmd}</arg>
<arg>return_stderr=True</arg>
<doc>Executes ``command`` on the remote machine and returns its outputs.</doc>
<status status="PASS" start="2026-04-25T23:31:57.192111" elapsed="0.023422"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-25T23:31:57.216036" elapsed="0.000562"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:57.217658" level="INFO"/>
<arg>${stderr}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:57.217037" 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-25T23:31:57.218263" elapsed="0.000038"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:57.217965" elapsed="0.000407"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:57.217910" 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-25T23:31:57.218883" elapsed="0.000060"/>
</return>
<status status="PASS" start="2026-04-25T23:31:57.218601" elapsed="0.000416"/>
</branch>
<status status="PASS" start="2026-04-25T23:31:57.218506" elapsed="0.000560"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-25T23:31:57.219115" elapsed="0.000019"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:57.224471" elapsed="0.000435"/>
</kw>
<msg time="2026-04-25T23:31:57.225050" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:57.223402" elapsed="0.001740"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:57.225349" elapsed="0.000081"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:57.225649" elapsed="0.000057"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:57.219556" elapsed="0.006241"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-25T23:31:56.873855" elapsed="0.352162"/>
</kw>
<msg time="2026-04-25T23:31:57.226093" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:56.873301" elapsed="0.353737"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-25T23:31:56.872761" elapsed="0.354411"/>
</kw>
<msg time="2026-04-25T23:31:57.227232" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:56.872268" elapsed="0.355027"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:31:57.230652" elapsed="0.000211"/>
</kw>
<msg time="2026-04-25T23:31:57.230906" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:31:57.230147" elapsed="0.000820"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:57.231114" elapsed="0.000021"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:31:57.231262" elapsed="0.000020"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:31:57.227708" elapsed="0.003633"/>
</kw>
<msg time="2026-04-25T23:31:57.231432" 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-25T23:31:56.871481" elapsed="0.360013"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:57.231994" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:57.231704" elapsed="0.000331"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-25T23:31:57.232083" 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-25T23:31:56.870572" elapsed="0.361636"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-25T23:31:56.870406" elapsed="0.361840"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-25T23:31:56.870276" elapsed="0.362009"/>
</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-25T23:31:56.868198" elapsed="0.364146"/>
</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-25T23:31:57.243272" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:31:57.242892" elapsed="0.000407"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:31:57.243759" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:31:57.243448" elapsed="0.000376"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-25T23:31:57.243872" elapsed="0.000030"/>
</return>
<msg time="2026-04-25T23:31:57.244030" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-25T23:31:57.242490" elapsed="0.001564"/>
</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-25T23:31:57.245541" 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-25T23:31:57.245241" elapsed="0.000326"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-25T23:31:57.245613" elapsed="0.000028"/>
</return>
<msg time="2026-04-25T23:31:57.245777" 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-25T23:31:57.244899" 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-25T23:31:57.253048" 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-25T23:31:57.252797" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:31:57.253478" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:31:57.253237" 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-25T23:31:57.258956" level="FAIL">ConnectionError: HTTPConnectionPool(host='10.30.171.166', 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.166', 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-25T23:31:57.255704" elapsed="0.004962">ConnectionError: HTTPConnectionPool(host='10.30.171.166', 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.166', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-25T23:31:57.253588" elapsed="0.007193">ConnectionError: HTTPConnectionPool(host='10.30.171.166', 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.166', 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-25T23:31:57.260959" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:57.260816" elapsed="0.000207"/>
</branch>
<status status="FAIL" start="2026-04-25T23:31:57.253570" elapsed="0.007476">ConnectionError: HTTPConnectionPool(host='10.30.171.166', 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.166', 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-25T23:31:57.261611" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:31:57.261776" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:57.261738" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:31:57.261720" 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-25T23:31:57.261970" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:31:57.262039" 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-25T23:31:57.248630" elapsed="0.013520">ConnectionError: HTTPConnectionPool(host='10.30.171.166', 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.166', 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-25T23:31:57.262222" 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-25T23:31:57.246004" elapsed="0.016315">ConnectionError: HTTPConnectionPool(host='10.30.171.166', 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.166', 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-25T23:31:57.262566" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-25T23:31:57.262743" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:31:57.262659" elapsed="0.000128"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:31:57.262642" elapsed="0.000167"/>
</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-25T23:31:57.262997" 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-25T23:31:57.263206" elapsed="0.000023"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-25T23:31:57.263272" 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-25T23:31:57.244521" elapsed="0.018854">ConnectionError: HTTPConnectionPool(host='10.30.171.166', 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.166', 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-25T23:31:57.263495" elapsed="0.000022"/>
</continue>
<status status="NOT RUN" start="2026-04-25T23:31:57.263454" elapsed="0.000090"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:31:57.263438" 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-25T23:31:57.263712" elapsed="0.000022"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-25T23:31:57.244300" elapsed="0.019485">ConnectionError: HTTPConnectionPool(host='10.30.171.166', 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.166', 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-25T23:31:57.244113" elapsed="0.019733">ConnectionError: HTTPConnectionPool(host='10.30.171.166', 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.166', 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-25T23:31:57.242093" elapsed="0.021847">ConnectionError: HTTPConnectionPool(host='10.30.171.166', 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.166', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</kw>
<status status="FAIL" start="2026-04-25T23:31:57.241793" elapsed="0.022205">ConnectionError: HTTPConnectionPool(host='10.30.171.166', 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.166', port=8181): Failed to establish a new connection: [Errno 111] Connection refused"))</status>
</branch>
<status status="FAIL" start="2026-04-25T23:31:57.241774" elapsed="0.022254">ConnectionError: HTTPConnectionPool(host='10.30.171.166', 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.166', 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-25T23:31:57.264278" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:57.264094" elapsed="0.000236"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:31:57.264078" elapsed="0.000275"/>
</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-25T23:31:57.264599" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:31:57.264403" elapsed="0.000251"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:31:57.264389" elapsed="0.000288"/>
</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-25T23:31:57.241367" elapsed="0.023406">ConnectionError: HTTPConnectionPool(host='10.30.171.166', 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.166', 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-25T23:32:07.281823" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:32:07.281352" elapsed="0.000503"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:32:07.282322" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:32:07.282019" elapsed="0.000329"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-25T23:32:07.282396" elapsed="0.000037"/>
</return>
<msg time="2026-04-25T23:32:07.282644" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-25T23:32:07.280960" 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-25T23:32:07.284151" 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-25T23:32:07.283856" elapsed="0.000322"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-25T23:32:07.284224" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:32:07.284371" 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-25T23:32:07.283511" elapsed="0.000884"/>
</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-25T23:32:07.291717" 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-25T23:32:07.291439" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:07.292158" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:07.291911" 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-25T23:32:07.360178" level="INFO">GET Request : url=http://10.30.171.166: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-25T23:32:07.360309" level="INFO">GET Response : url=http://10.30.171.166: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-25T23:32:07.360591" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.166: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-25T23:32:07.294213" elapsed="0.067955">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.166:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-25T23:32:07.292271" elapsed="0.070089">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.166: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-25T23:32:07.362814" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:07.362435" elapsed="0.000529"/>
</branch>
<status status="FAIL" start="2026-04-25T23:32:07.292252" elapsed="0.070765">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.166: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-25T23:32:07.364257" elapsed="0.000060"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:32:07.364557" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:32:07.364474" elapsed="0.000174"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:32:07.364437" elapsed="0.000308"/>
</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-25T23:32:07.365040" elapsed="0.000047"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:32:07.365194" 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-25T23:32:07.286970" elapsed="0.078460">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.166: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-25T23:32:07.365586" 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-25T23:32:07.284591" elapsed="0.081243">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.166: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-25T23:32:07.366369" elapsed="0.000055"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-25T23:32:07.366680" elapsed="0.000062"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:32:07.366574" elapsed="0.000232"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:32:07.366536" elapsed="0.000318"/>
</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-25T23:32:07.367263" 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-25T23:32:07.367753" elapsed="0.000054"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-25T23:32:07.367906" 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-25T23:32:07.283153" elapsed="0.084979">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.166: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-25T23:32:07.368387" elapsed="0.000035"/>
</continue>
<status status="NOT RUN" start="2026-04-25T23:32:07.368304" elapsed="0.000173"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:32:07.368268" elapsed="0.000257"/>
</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-25T23:32:07.368849" elapsed="0.000049"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-25T23:32:07.282936" elapsed="0.086072">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.166: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-25T23:32:07.282749" elapsed="0.086387">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.166: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-25T23:32:07.280542" elapsed="0.088802">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.166:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-25T23:32:07.280210" elapsed="0.089261">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.166:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-25T23:32:07.280184" elapsed="0.089355">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.166: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-25T23:32:07.370121" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:07.369711" elapsed="0.000527"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:32:07.369648" elapsed="0.000639"/>
</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-25T23:32:07.370907" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:07.370400" elapsed="0.000635"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:32:07.370368" 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-25T23:32:07.279691" elapsed="0.091567">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.166: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-25T23:32:17.387965" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:32:17.387461" elapsed="0.000538"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:32:17.388523" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:32:17.388197" elapsed="0.000353"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-25T23:32:17.388601" elapsed="0.000037"/>
</return>
<msg time="2026-04-25T23:32:17.388794" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-25T23:32:17.387057" elapsed="0.001765"/>
</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-25T23:32:17.390879" 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-25T23:32:17.390536" elapsed="0.000372"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-25T23:32:17.391024" elapsed="0.000035"/>
</return>
<msg time="2026-04-25T23:32:17.391184" 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-25T23:32:17.390186" elapsed="0.001025"/>
</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-25T23:32:17.398330" 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-25T23:32:17.398068" elapsed="0.000323"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:17.398791" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:17.398534" 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-25T23:32:17.411447" level="INFO">GET Request : url=http://10.30.171.166: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-25T23:32:17.411531" level="INFO">GET Response : url=http://10.30.171.166: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-25T23:32:17.411714" level="FAIL">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.166: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-25T23:32:17.400906" elapsed="0.011364">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.166:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-25T23:32:17.398906" elapsed="0.013484">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.166: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-25T23:32:17.412636" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:17.412436" elapsed="0.000354"/>
</branch>
<status status="FAIL" start="2026-04-25T23:32:17.398885" elapsed="0.013948">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.166: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-25T23:32:17.413586" elapsed="0.000036"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:32:17.413801" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:32:17.413745" elapsed="0.000112"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:32:17.413720" elapsed="0.000166"/>
</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-25T23:32:17.414068" elapsed="0.000029"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:32:17.414163" 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-25T23:32:17.393823" elapsed="0.020488">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.166: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-25T23:32:17.414407" 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-25T23:32:17.391414" elapsed="0.023135">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.166: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-25T23:32:17.414893" elapsed="0.000036"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-25T23:32:17.415069" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:32:17.415022" elapsed="0.000102"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:32:17.414999" 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-25T23:32:17.415507" 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-25T23:32:17.415827" elapsed="0.000033"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="NOT RUN" start="2026-04-25T23:32:17.415921" elapsed="0.000053"/>
</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-25T23:32:17.389584" elapsed="0.026517">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.166: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-25T23:32:17.416275" elapsed="0.000024"/>
</continue>
<status status="NOT RUN" start="2026-04-25T23:32:17.416222" elapsed="0.000114"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:32:17.416198" 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-25T23:32:17.416548" elapsed="0.000029"/>
</kw>
<var name="${index}">1</var>
<status status="FAIL" start="2026-04-25T23:32:17.389357" elapsed="0.027289">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.166: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-25T23:32:17.388884" elapsed="0.027873">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.166: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-25T23:32:17.386587" elapsed="0.030336">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.166:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</kw>
<status status="FAIL" start="2026-04-25T23:32:17.386207" elapsed="0.030799">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.166:8181/jolokia/read/org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore</status>
</branch>
<status status="FAIL" start="2026-04-25T23:32:17.386182" elapsed="0.030866">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.166: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-25T23:32:17.417400" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:17.417141" elapsed="0.000333"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:32:17.417119" elapsed="0.000386"/>
</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-25T23:32:17.417870" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:17.417576" elapsed="0.000372"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:32:17.417555" elapsed="0.000424"/>
</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-25T23:32:17.385665" elapsed="0.032422">HTTPError: 401 Client Error: Unauthorized for url: http://10.30.171.166: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-25T23:32:27.435219" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:32:27.434772" elapsed="0.000478"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:32:27.435732" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:32:27.435411" elapsed="0.000348"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-25T23:32:27.435807" elapsed="0.000036"/>
</return>
<msg time="2026-04-25T23:32:27.435971" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-25T23:32:27.434355" elapsed="0.001641"/>
</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-25T23:32:27.437488" 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-25T23:32:27.437190" elapsed="0.000325"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-25T23:32:27.437562" elapsed="0.000028"/>
</return>
<msg time="2026-04-25T23:32:27.437722" 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-25T23:32:27.436863" elapsed="0.000886"/>
</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-25T23:32:27.446427" 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-25T23:32:27.446164" elapsed="0.000373"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:27.446951" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:27.446701" 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-25T23:32:27.797988" level="INFO">GET Request : url=http://10.30.171.166: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-25T23:32:27.798169" level="INFO">GET Response : url=http://10.30.171.166: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, 25 Apr 2026 23:32:27 GMT', 'Expires': 'Sat, 25 Apr 2026 22:32:27 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"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1777159947,"status":200} 
 </msg>
<msg time="2026-04-25T23:32:27.798464" 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-25T23:32:27.449071" elapsed="0.349455"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:27.447064" elapsed="0.351580"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:27.799149" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:27.798744" elapsed="0.000562"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:27.447045" elapsed="0.352311"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:27.807093" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-config"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1777159947,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:27.802276" elapsed="0.004884"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:27.801766" elapsed="0.005444"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:27.801719" elapsed="0.005518"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:27.810075" 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-25T23:32:27.807506" elapsed="0.002630"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:27.807293" elapsed="0.002892"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:27.807276" elapsed="0.002934"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:32:27.810850" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-25T23:32:27.810376" elapsed="0.000501"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:27.811170" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:27.810948" elapsed="0.000307"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:32:27.811940" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-25T23:32:27.811427" elapsed="0.000540"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:27.811279" elapsed="0.000749"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:27.810929" elapsed="0.001121"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:32:27.812607" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-25T23:32:27.812196" elapsed="0.000437"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:27.812938" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:27.812720" elapsed="0.000335"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:32:27.813740" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-25T23:32:27.813229" elapsed="0.000538"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:27.813081" elapsed="0.000747"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:27.812701" elapsed="0.001148"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:32:27.813992" elapsed="0.000554"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-25T23:32:27.815492" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-25T23:32:27.814718" elapsed="0.000801"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-25T23:32:27.815661" elapsed="0.002646"/>
</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-25T23:32:27.800626" elapsed="0.017747"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:32:27.818612" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:32:27.818500" elapsed="0.000159"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:27.818480" elapsed="0.000205"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-25T23:32:27.821436" level="INFO">${text_normalized} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1777159947,...</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-25T23:32:27.818837" elapsed="0.002629"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-25T23:32:27.821520" elapsed="0.000035"/>
</return>
<msg time="2026-04-25T23:32:27.821733" level="INFO">${response_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1777159947,...</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-25T23:32:27.440333" elapsed="0.381428"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-25T23:32:27.821821" elapsed="0.000026"/>
</return>
<msg time="2026-04-25T23:32:27.821969" level="INFO">${conf_text} = {
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1777159947,...</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-25T23:32:27.437947" elapsed="0.384047"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:27.822813" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1777159947,
 "value": {
  "LocalShards": [
   "member-1-shard-default-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-25T23:32:27.822543" elapsed="0.000318"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:32:27.823801" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1777159947, '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-25T23:32:27.823378" elapsed="0.000452"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-25T23:32:27.823880" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:32:27.824037" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-config,type=DistributedConfigDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1777159947, '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-25T23:32:27.823057" elapsed="0.001006"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:32:27.824450" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-default-config'], 'MemberName': 'member-1', 'SyncStatus': True}</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-25T23:32:27.824207" elapsed="0.000276"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:32:27.824875" 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-25T23:32:27.824633" elapsed="0.000269"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-25T23:32:27.824949" elapsed="0.000030"/>
</return>
<msg time="2026-04-25T23:32:27.825144" 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-25T23:32:27.822202" elapsed="0.002968"/>
</kw>
<if>
<branch type="IF" condition="'False' == ${conf_status}">
<return>
<value>False</value>
<status status="NOT RUN" start="2026-04-25T23:32:27.825346" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:32:27.825238" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:27.825220" 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-25T23:32:27.832362" 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-25T23:32:27.832114" elapsed="0.000295"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:27.832810" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:27.832551" 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-25T23:32:27.841391" level="INFO">GET Request : url=http://10.30.171.166: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-25T23:32:27.841454" level="INFO">GET Response : url=http://10.30.171.166: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, 25 Apr 2026 23:32:27 GMT', 'Expires': 'Sat, 25 Apr 2026 22:32:27 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"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1777159947,"status":200} 
 </msg>
<msg time="2026-04-25T23:32:27.841608" 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-25T23:32:27.834889" elapsed="0.006746"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:27.832920" elapsed="0.008760"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:27.841878" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:27.841730" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:27.832902" elapsed="0.009060"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:27.847510" level="INFO">{"request":{"mbean":"org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore","type":"read"},"value":{"LocalShards":["member-1-shard-default-operational"],"SyncStatus":true,"MemberName":"member-1"},"timestamp":1777159947,"status":200}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:27.843572" elapsed="0.004033"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:27.843260" elapsed="0.004414"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:27.843233" elapsed="0.004499"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:27.851277" 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-25T23:32:27.848172" elapsed="0.003167"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:27.847875" elapsed="0.003511"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:27.847850" elapsed="0.003561"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:32:27.852036" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-25T23:32:27.851575" elapsed="0.000489"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:27.852362" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:27.852134" elapsed="0.000314"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:32:27.853163" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-25T23:32:27.852626" elapsed="0.000565"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:27.852473" elapsed="0.000779"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:27.852116" elapsed="0.001159"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:32:27.853844" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-25T23:32:27.853421" elapsed="0.000449"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:27.854159" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:27.853940" elapsed="0.000303"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:32:27.854921" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-25T23:32:27.854415" elapsed="0.000533"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:27.854268" elapsed="0.000741"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:27.853922" elapsed="0.001109"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:32:27.855175" elapsed="0.000572"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-25T23:32:27.856314" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-25T23:32:27.855902" elapsed="0.000439"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-25T23:32:27.856482" elapsed="0.002513"/>
</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-25T23:32:27.842626" elapsed="0.016434"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:32:27.859236" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:32:27.859129" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:27.859111" elapsed="0.000192"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-25T23:32:27.861975" 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-25T23:32:27.859435" elapsed="0.002569"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-25T23:32:27.862055" elapsed="0.000032"/>
</return>
<msg time="2026-04-25T23:32:27.862212" 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-25T23:32:27.827975" elapsed="0.034263"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-25T23:32:27.862333" elapsed="0.000028"/>
</return>
<msg time="2026-04-25T23:32:27.862483" 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-25T23:32:27.825601" elapsed="0.036907"/>
</kw>
<kw name="ClusterManagement__Parse_Sync_Status" owner="ClusterManagement">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:27.863319" level="INFO">{
 "request": {
  "mbean": "org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore",
  "type": "read"
 },
 "status": 200,
 "timestamp": 1777159947,
 "value": {
  "LocalShards": [
   "member-1-shard-default-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-25T23:32:27.863069" elapsed="0.000297"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:32:27.864295" level="INFO">${json_data} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1777159947, ...</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-25T23:32:27.863902" elapsed="0.000420"/>
</kw>
<return>
<value>${json_data}</value>
<status status="PASS" start="2026-04-25T23:32:27.864371" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:32:27.864526" level="INFO">${manager_object} = {'request': {'mbean': 'org.opendaylight.controller:Category=ShardManager,name=shard-manager-operational,type=DistributedOperationalDatastore', 'type': 'read'}, 'status': 200, 'timestamp': 1777159947, ...</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-25T23:32:27.863563" elapsed="0.000989"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:32:27.864959" level="INFO">${value_object} = {'LocalShards': ['member-1-shard-default-operational'], 'MemberName': 'member-1', 'SyncStatus': True}</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-25T23:32:27.864739" elapsed="0.000246"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:32:27.865366" 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-25T23:32:27.865125" elapsed="0.000267"/>
</kw>
<return>
<value>${sync_status}</value>
<status status="PASS" start="2026-04-25T23:32:27.865440" elapsed="0.000027"/>
</return>
<msg time="2026-04-25T23:32:27.865588" 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-25T23:32:27.862727" elapsed="0.002885"/>
</kw>
<return>
<value>${oper_status}</value>
<status status="PASS" start="2026-04-25T23:32:27.865656" elapsed="0.000025"/>
</return>
<msg time="2026-04-25T23:32:27.865816" 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-25T23:32:27.436484" elapsed="0.429356"/>
</kw>
<if>
<branch type="IF" condition="'True' == '${status}'">
<continue>
<status status="PASS" start="2026-04-25T23:32:27.866017" elapsed="0.000034"/>
</continue>
<status status="PASS" start="2026-04-25T23:32:27.865907" elapsed="0.000175"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:27.865890" 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-25T23:32:27.866238" elapsed="0.000021"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-25T23:32:27.436268" elapsed="0.430024"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-25T23:32:27.436054" elapsed="0.430274"/>
</for>
<arg>${member_index_list}</arg>
<doc>Fail if no-sync is detected on a member from list (or any).</doc>
<status status="PASS" start="2026-04-25T23:32:27.433958" elapsed="0.432427"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:27.433603" elapsed="0.432813"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:27.433579" elapsed="0.432860"/>
</if>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Verify_Restconf_Is_Available" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:32:27.867879" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:32:27.867483" elapsed="0.000423"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:32:27.868342" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:32:27.868052" elapsed="0.000315"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-25T23:32:27.868411" elapsed="0.000028"/>
</return>
<msg time="2026-04-25T23:32:27.868560" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-25T23:32:27.867127" elapsed="0.001457"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:32:27.869795" 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-25T23:32:27.869484" elapsed="0.000337"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-04-25T23:32:27.869868" elapsed="0.000027"/>
</return>
<msg time="2026-04-25T23:32:27.870012" level="INFO">${session} = ClusterManagement__session_1</msg>
<var>${session}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-04-25T23:32:27.868957" elapsed="0.001080"/>
</kw>
<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-25T23:32:27.915075" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-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-25T23:32:27.914427" elapsed="0.000689"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:32:27.916354" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-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-25T23:32:27.915937" elapsed="0.000498">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/restconf/modules.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:32:27.916578" 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-25T23:32:27.915321" elapsed="0.001294"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:32:27.917660" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-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-25T23:32:27.916847" elapsed="0.000867"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:32:27.918195" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:32:27.918484" 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-25T23:32:27.917939" elapsed="0.000584"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:27.919183" 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-25T23:32:27.918740" elapsed="0.000520"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:27.920949" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:27.920676" elapsed="0.000317"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:32:27.921479" 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-25T23:32:27.921185" elapsed="0.000320"/>
</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-25T23:32:27.921877" 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-25T23:32:27.922069" 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-25T23:32:27.922230" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:32:27.921754" elapsed="0.000532"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:32:27.921598" elapsed="0.000716"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:32:27.922401" elapsed="0.000050"/>
</return>
<msg time="2026-04-25T23:32:27.922847" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:32:27.920071" elapsed="0.002827"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:27.919359" elapsed="0.003603"/>
</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-25T23:32:27.923726" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:27.923007" elapsed="0.000837"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:27.919340" elapsed="0.004545"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:32:27.924855" 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-25T23:32:27.924075" elapsed="0.000820"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:32:27.924994" 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-1node-akka1-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-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-1node-akka1-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:32:27.913303" elapsed="0.011872"/>
</kw>
<msg time="2026-04-25T23:32:27.925231" 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-25T23:32:27.901007" elapsed="0.024274"/>
</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-1node-akka1-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-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-1node-akka1-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:27.937509" 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-1node-akka1-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-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-1node-akka1-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:27.949377" 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-1node-akka1-all-chromium/test/csit/libraries/../variables/restconf/modules.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-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-1node-akka1-all-chromium/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:27.961154" 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-25T23:32:27.961335" 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-25T23:32:27.961523" 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-25T23:32:27.961932" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:27.961799" elapsed="0.000189"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:32:27.961785" elapsed="0.000225"/>
</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-25T23:32:27.962136" 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-25T23:32:27.962290" 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-25T23:32:27.962441" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:32:27.961754" elapsed="0.000739"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:32:27.961601" 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-25T23:32:27.962650" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:32:27.962743" elapsed="0.000016"/>
</return>
<msg time="2026-04-25T23:32:27.962860" 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 1000 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-25T23:32:27.896945" elapsed="0.065940"/>
</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-25T23:32:27.964256" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-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-25T23:32:27.963852" elapsed="0.000468">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:32:27.964412" 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-25T23:32:27.963505" elapsed="0.000931"/>
</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-25T23:32:27.964753" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:27.964506" elapsed="0.000305"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:32:27.965292" 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-25T23:32:27.964985" elapsed="0.000333"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:27.964834" elapsed="0.000519"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:27.964488" elapsed="0.000899"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:32:27.967646" 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-25T23:32:27.965527" elapsed="0.002192"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:32:27.967775" elapsed="0.000030"/>
</return>
<msg time="2026-04-25T23:32:27.967934" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-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-25T23:32:27.963197" elapsed="0.004763"/>
</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-25T23:32:27.969313" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-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-25T23:32:27.968912" elapsed="0.000464">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:32:27.969496" 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-25T23:32:27.968569" elapsed="0.000952"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:32:27.969742" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-25T23:32:27.969590" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:27.969572" elapsed="0.000254"/>
</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-25T23:32:27.969962" 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-25T23:32:27.970121" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:32:27.970185" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:32:27.972158" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-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-25T23:32:27.968258" elapsed="0.003926"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:27.973548" 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-25T23:32:27.973288" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:27.973986" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:27.973747" 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-25T23:32:28.477758" level="INFO">GET Request : url=http://10.30.171.166: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-25T23:32:28.481374" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=200, reason=OK 
 headers={'Set-Cookie': 'JSESSIONID=node012za8i24d7ueza8ummyn1hh710.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Fri, 24-Apr-2026 23:32:28 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","schema":"/rests/modules/hwvtep?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","schema":"/rests/modules/opendaylight-flow-table-statistics?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","schema":"/rests/modules/odl-bmp-monitor-config?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","schema":"/rests/modules/bgp-inet?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","schema":"/rests/modules/openflowplugin-extension-nicira-match?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","schema":"/rests/modules/ietf-crypto-types?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","encrypted-passwords","cms-enveloped-data-format","csr-generation","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?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","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?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","schema":"/rests/modules/topology-lldp-discovery-config?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","schema":"/rests/modules/ietf-network-instance?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","schema":"/rests/modules/nicira-action?revision=2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","schema":"/rests/modules/odl-pcep-message?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","schema":"/rests/modules/odl-bgp-peer-acceptor-config?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","schema":"/rests/modules/ietf-yang-schema-mount?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","schema":"/rests/modules/ietf-http-client?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","schema":"/rests/modules/odl-bgp-evpn?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","schema":"/rests/modules/bgp-ll-graceful-restart?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","schema":"/rests/modules/bgp-linkstate?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","schema":"/rests/modules/nicira-match?revision=2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","schema":"/rests/modules/arp-packet?revision=2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?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","schema":"/rests/modules/base-packet?revision=2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?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","schema":"/rests/modules/ietf-ssh-server?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","ssh-server-keepalives","local-user-auth-hostbased"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","schema":"/rests/modules/bgp-message?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","schema":"/rests/modules/ietf-inet-types?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","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?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","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","schema":"/rests/modules/openconfig-network-instance?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","schema":"/rests/modules/data-export-import-internal?revision=2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?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","schema":"/rests/modules/iana-tls-cipher-suite-algs?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","schema":"/rests/modules/ietf-subscribed-notifications?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","schema":"/rests/modules/flow-topology-discovery?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","schema":"/rests/modules/l3-unicast-igp-topology?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","schema":"/rests/modules/ietf-netconf-notifications?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","schema":"/rests/modules/topology-tunnel-pcep-programming?revision=2018-11-09","namespace":"urn:opendaylight:params:xml:ns:yang:topology:tunnel:pcep:programming","conformance-type":"import"},{"name":"opendaylight-queue-types_201... (set the log level to DEBUG or TRACE to see the full content) 
 </msg>
<msg time="2026-04-25T23:32:28.481794" 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-25T23:32:27.976062" elapsed="0.505776"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:27.974095" elapsed="0.507830"/>
</branch>
<branch type="ELSE">
<kw name="GET On Session" owner="RequestsLibrary">
<var>${response}</var>
<arg>${session}</arg>
<arg>url=${uri}</arg>
<arg>headers=${accept}</arg>
<arg>timeout=${http_timeout}</arg>
<doc>Sends a GET request on a previously created HTTP Session.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:28.482262" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:28.481974" elapsed="0.000388"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:27.974077" elapsed="0.508317"/>
</if>
<kw name="Check_Status_Code" owner="TemplatedRequests">
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:28.488356" level="INFO">{"ietf-yang-library:modules-state":{"module":[{"name":"hwvtep_2015-09-01","revision":"2015-09-01","schema":"/rests/modules/hwvtep?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","schema":"/rests/modules/opendaylight-flow-table-statistics?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","schema":"/rests/modules/odl-bmp-monitor-config?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","schema":"/rests/modules/bgp-inet?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","schema":"/rests/modules/openflowplugin-extension-nicira-match?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","schema":"/rests/modules/ietf-crypto-types?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","encrypted-passwords","cms-enveloped-data-format","csr-generation","encrypted-private-keys","asymmetrically-encrypted-value-format","cms-encrypted-data-format","cleartext-private-keys","symmetrically-encrypted-value-format","certificate-expiration-notification"]},{"name":"batch-common_2016-03-22","revision":"2016-03-22","schema":"/rests/modules/batch-common?revision=2016-03-22","namespace":"urn:opendaylight:service:batch:common","conformance-type":"import"},{"name":"lldp-speaker_2014-10-23","revision":"2014-10-23","schema":"/rests/modules/lldp-speaker?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","schema":"/rests/modules/openflowplugin-extension-general?revision=2014-07-14","namespace":"urn:opendaylight:openflowplugin:extension:general","conformance-type":"import"},{"name":"opendaylight-port-statistics_2013-12-14","revision":"2013-12-14","schema":"/rests/modules/opendaylight-port-statistics?revision=2013-12-14","namespace":"urn:opendaylight:port:statistics","conformance-type":"import"},{"name":"aaa-app-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/aaa-app-config?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","schema":"/rests/modules/topology-lldp-discovery-config?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","schema":"/rests/modules/ietf-network-instance?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","schema":"/rests/modules/nicira-action?revision=2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:action","conformance-type":"import"},{"name":"odl-pcep-message_2025-09-30","revision":"2025-09-30","schema":"/rests/modules/odl-pcep-message?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","schema":"/rests/modules/odl-bgp-peer-acceptor-config?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","schema":"/rests/modules/ietf-yang-schema-mount?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","schema":"/rests/modules/ietf-http-client?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","schema":"/rests/modules/odl-bgp-evpn?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","schema":"/rests/modules/bgp-ll-graceful-restart?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","schema":"/rests/modules/bgp-linkstate?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","schema":"/rests/modules/nicira-match?revision=2014-04-21","namespace":"urn:opendaylight:openflowjava:nx:match","conformance-type":"import"},{"name":"arp-packet_2014-05-28","revision":"2014-05-28","schema":"/rests/modules/arp-packet?revision=2014-05-28","namespace":"urn:opendaylight:packet:arp","conformance-type":"import"},{"name":"ietf-ssh-common_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-common?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","schema":"/rests/modules/base-packet?revision=2014-05-28","namespace":"urn:opendaylight:packet:basepacket","conformance-type":"import"},{"name":"frm-reconciliation_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/frm-reconciliation?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","schema":"/rests/modules/ietf-ssh-server?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","ssh-server-keepalives","local-user-auth-hostbased"]},{"name":"bgp-message_2020-01-20","revision":"2020-01-20","schema":"/rests/modules/bgp-message?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","schema":"/rests/modules/ietf-inet-types?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","schema":"/rests/modules/sal-experimenter-message?revision=2015-10-20","namespace":"urn:opendaylight:experimenter-message:service","conformance-type":"import"},{"name":"ietf-tcp-server_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-tcp-server?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","schema":"/rests/modules/sal-flow?revision=2013-08-19","namespace":"urn:opendaylight:flow:service","conformance-type":"import"},{"name":"openconfig-network-instance_2015-10-18","revision":"2015-10-18","schema":"/rests/modules/openconfig-network-instance?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","schema":"/rests/modules/data-export-import-internal?revision=2016-09-21","namespace":"urn:opendaylight:daexim-internal","conformance-type":"import"},{"name":"sal-port_2013-11-07","revision":"2013-11-07","schema":"/rests/modules/sal-port?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","schema":"/rests/modules/iana-tls-cipher-suite-algs?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","schema":"/rests/modules/ietf-subscribed-notifications?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","schema":"/rests/modules/flow-topology-discovery?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","schema":"/rests/modules/l3-unicast-igp-topology?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","schema":"/rests/modules/ietf-netconf-notifications?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","schema":"/rests/modules/topology-tunnel-pcep-programming?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","schema":"/rests/modules/opendaylight-queue-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:queue","conformance-type":"import"},{"name":"sal-echo_2015-03-05","revision":"2015-03-05","schema":"/rests/modules/sal-echo?revision=2015-03-05","namespace":"urn:opendaylight:echo:service","conformance-type":"import"},{"name":"topology-tunnel-programming_2013-09-30","revision":"2013-09-30","schema":"/rests/modules/topology-tunnel-programming?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","schema":"/rests/modules/openconfig-network-instance-types?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","schema":"/rests/modules/statistics-manager-control?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","schema":"/rests/modules/openconfig-interfaces?revision=2016-04-12","namespace":"http://openconfig.net/yang/interfaces","conformance-type":"import"},{"name":"iana-afn-safi_2013-07-04","revision":"2013-07-04","schema":"/rests/modules/iana-afn-safi?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","schema":"/rests/modules/bgp-epe?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","schema":"/rests/modules/barrier-common?revision=2016-03-15","namespace":"urn:opendaylight:service:barrier:common","conformance-type":"import"},{"name":"flow-capable-transaction_2015-03-04","revision":"2015-03-04","schema":"/rests/modules/flow-capable-transaction?revision=2015-03-04","namespace":"urn:opendaylight:flow:transaction","conformance-type":"import"},{"name":"iana-ssh-mac-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-mac-algs?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","schema":"/rests/modules/opendaylight-topology-inventory?revision=2013-10-30","namespace":"urn:opendaylight:model:topology:inventory","conformance-type":"import"},{"name":"ietf-ssh-client_2024-10-10","revision":"2024-10-10","schema":"/rests/modules/ietf-ssh-client?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-password","client-ident-publickey"]},{"name":"odl-lisp-address-types_2016-05-04","revision":"2016-05-04","schema":"/rests/modules/odl-lisp-address-types?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","schema":"/rests/modules/odl-controller-cds-types?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","schema":"/rests/modules/address-tracker?revision=2014-06-17","namespace":"urn:opendaylight:address-tracker","conformance-type":"import"},{"name":"opendaylight-meter-statistics_2013-11-11","revision":"2013-11-11","schema":"/rests/modules/opendaylight-meter-statistics?revision=2013-11-11","namespace":"urn:opendaylight:meter:statistics","conformance-type":"import"},{"name":"car-people_2014-08-18","revision":"2014-08-18","schema":"/rests/modules/car-people?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","schema":"/rests/modules/bgp-mvpn-ipv4?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","schema":"/rests/modules/ietf-tls-server?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-server","conformance-type":"import","feature":["server-ident-x509-cert","client-auth-supported","client-auth-x509-cert"]},{"name":"pmsi-tunnel_2020-01-20","revision":"2020-01-20","schema":"/rests/modules/pmsi-tunnel?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","schema":"/rests/modules/ietf-restconf-monitoring?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","schema":"/rests/modules/opendaylight-statistics-types?revision=2013-09-25","namespace":"urn:opendaylight:model:statistics:types","conformance-type":"import"},{"name":"bgp-vpn_2018-03-29","revision":"2018-03-29","schema":"/rests/modules/bgp-vpn?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","schema":"/rests/modules/bgp-multiprotocol?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","schema":"/rests/modules/openflow-switch-connection-config?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","schema":"/rests/modules/openconfig-bgp-multiprotocol?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","schema":"/rests/modules/ietf-yang-library?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","schema":"/rests/modules/openflowplugin-experimenter-types?revision=2015-10-20","namespace":"urn:opendaylight:openflowplugin:experimenter:types","conformance-type":"import"},{"name":"ietf-ip_2018-02-22","revision":"2018-02-22","schema":"/rests/modules/ietf-ip?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","schema":"/rests/modules/odl-mdsal-lowlevel-control?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","schema":"/rests/modules/openconfig-extensions?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","schema":"/rests/modules/ietf-tcp-client?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tcp-client","conformance-type":"import","feature":["tcp-client-keepalives","local-binding-supported"]},{"name":"node-config_2014-10-15","revision":"2014-10-15","schema":"/rests/modules/node-config?revision=2014-10-15","namespace":"urn:opendaylight:module:config","conformance-type":"import"},{"name":"overlay_2015-01-05","revision":"2015-01-05","schema":"/rests/modules/overlay?revision=2015-01-05","namespace":"urn:opendaylight:params:xml:ns:yang:overlay","conformance-type":"import"},{"name":"iana_2013-08-16","revision":"2013-08-16","schema":"/rests/modules/iana?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","schema":"/rests/modules/ietf-restconf?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","schema":"/rests/modules/ietf-datastores?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","schema":"/rests/modules/jsonrpc-inband-models?revision=2019-01-12","namespace":"urn:opendaylight:jsonrpc:ibm","conformance-type":"import"},{"name":"ietf-yang-patch_2017-02-22","revision":"2017-02-22","schema":"/rests/modules/ietf-yang-patch?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","schema":"/rests/modules/topology-tunnel-p2p?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","schema":"/rests/modules/odl-pcep-stats-provider?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","schema":"/rests/modules/sal-group?revision=2013-09-18","namespace":"urn:opendaylight:group:service","conformance-type":"import"},{"name":"odl-codegen-extensions_2024-06-27","revision":"2024-06-27","schema":"/rests/modules/odl-codegen-extensions?revision=2024-06-27","namespace":"urn:opendaylight:yang:extension:codegen","conformance-type":"import"},{"name":"odl-pcep-config_2025-09-30","revision":"2025-09-30","schema":"/rests/modules/odl-pcep-config?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","schema":"/rests/modules/sal-meter?revision=2013-09-18","namespace":"urn:opendaylight:meter:service","conformance-type":"import"},{"name":"ietf-interfaces_2018-02-20","revision":"2018-02-20","schema":"/rests/modules/ietf-interfaces?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","schema":"/rests/modules/bgp-labeled-unicast?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","schema":"/rests/modules/opendaylight-l2-types?revision=2013-08-27","namespace":"urn:opendaylight:l2:types","conformance-type":"import"},{"name":"opendaylight-flow-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-flow-types?revision=2013-10-26","namespace":"urn:opendaylight:flow:types","conformance-type":"import"},{"name":"lldp-speaker-config_2016-05-12","revision":"2016-05-12","schema":"/rests/modules/lldp-speaker-config?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","schema":"/rests/modules/ieee754?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","schema":"/rests/modules/address-tracker-config?revision=2016-06-21","namespace":"urn:opendaylight:packet:address-tracker-config","conformance-type":"import"},{"name":"aaa-cert_2015-11-26","revision":"2015-11-26","schema":"/rests/modules/aaa-cert?revision=2015-11-26","namespace":"urn:opendaylight:yang:aaa:cert","conformance-type":"import"},{"name":"icmp-packet_2014-05-28","revision":"2014-05-28","schema":"/rests/modules/icmp-packet?revision=2014-05-28","namespace":"urn:opendaylight:packet:icmp","conformance-type":"import"},{"name":"openconfig-routing-policy_2015-10-09","revision":"2015-10-09","schema":"/rests/modules/openconfig-routing-policy?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","schema":"/rests/modules/openconfig-bgp-operational?revision=2015-10-09","namespace":"http://openconfig.net/yang/bgp-operational","conformance-type":"import"},{"name":"openflow-action_2015-02-03","revision":"2015-02-03","schema":"/rests/modules/openflow-action?revision=2015-02-03","namespace":"urn:opendaylight:openflow:common:action","conformance-type":"import"},{"name":"car_2014-08-18","revision":"2014-08-18","schema":"/rests/modules/car?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","schema":"/rests/modules/openflow-approved-extensions?revision=2016-08-02","namespace":"urn:opendaylight:openflow:approved:extensions","conformance-type":"import"},{"name":"nc-notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/nc-notifications?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","schema":"/rests/modules/ietf-netconf-nmda?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","schema":"/rests/modules/ietf-tcp-common?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","schema":"/rests/modules/odl-lisp-proto?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","schema":"/rests/modules/odl-bgp-topology-config?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","schema":"/rests/modules/odl-pcep-session-stats?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","schema":"/rests/modules/network-topology?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","schema":"/rests/modules/topology-tunnel-sr?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","schema":"/rests/modules/openconfig-policy-types?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","schema":"/rests/modules/odl-pcep-object?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","schema":"/rests/modules/bgp-vpn-ipv4?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","schema":"/rests/modules/openflowplugin-extension-nicira-action?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","schema":"/rests/modules/aaa-encrypt-service-config?revision=2024-02-02","namespace":"config:aaa:authn:encrypt:service:config","conformance-type":"import"},{"name":"openflow-instruction_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-instruction?revision=2013-07-31","namespace":"urn:opendaylight:openflow:common:instruction","conformance-type":"import"},{"name":"bgp-segment-routing_2024-12-19","revision":"2024-12-19","schema":"/rests/modules/bgp-segment-routing?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","schema":"/rests/modules/bgp-mvpn-ipv6?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","schema":"/rests/modules/ietf-tls-client?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","schema":"/rests/modules/network-topology-pcep-programming?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","schema":"/rests/modules/opendaylight-group-statistics?revision=2013-11-11","namespace":"urn:opendaylight:group:statistics","conformance-type":"import"},{"name":"cluster-admin_2025-01-31","revision":"2025-01-31","schema":"/rests/modules/cluster-admin?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","schema":"/rests/modules/opendaylight-flow-statistics?revision=2013-08-19","namespace":"urn:opendaylight:flow:statistics","conformance-type":"import"},{"name":"pcep-topology-stats-rpc_2019-03-21","revision":"2019-03-21","schema":"/rests/modules/pcep-topology-stats-rpc?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","schema":"/rests/modules/rsvp?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","schema":"/rests/modules/ietf-lisp-address-types?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","schema":"/rests/modules/odl-bgp-topology-types?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","schema":"/rests/modules/opendaylight-table-types?revision=2013-10-26","namespace":"urn:opendaylight:table:types","conformance-type":"import"},{"name":"forwarding-rules-manager-config_2016-05-11","revision":"2016-05-11","schema":"/rests/modules/forwarding-rules-manager-config?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","schema":"/rests/modules/odl-srm-types?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","schema":"/rests/modules/ietf-x509-cert-to-name?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","schema":"/rests/modules/flow-node-inventory?revision=2013-08-19","namespace":"urn:opendaylight:flow:inventory","conformance-type":"import"},{"name":"host-tracker-service_2014-06-24","revision":"2014-06-24","schema":"/rests/modules/host-tracker-service?revision=2014-06-24","namespace":"urn:opendaylight:host-tracker","conformance-type":"import"},{"name":"network-topology-sr_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/network-topology-sr?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","schema":"/rests/modules/flow-errors?revision=2013-11-16","namespace":"urn:opendaylight:flow:errors","conformance-type":"import"},{"name":"rfc2385_2016-03-24","revision":"2016-03-24","schema":"/rests/modules/rfc2385?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","schema":"/rests/modules/network-topology-programming?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","schema":"/rests/modules/graph?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","schema":"/rests/modules/ietf-netconf?revision=2011-06-01","namespace":"urn:ietf:params:xml:ns:netconf:base:1.0","conformance-type":"import","feature":["url","xpath","rollback-on-error","validate","confirmed-commit","candidate","startup","writable-running"]},{"name":"odl-network-topology_2014-01-13","revision":"2014-01-13","schema":"/rests/modules/odl-network-topology?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","schema":"/rests/modules/iana-ssh-public-key-algs?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","schema":"/rests/modules/aaa-cert-mdsal?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","schema":"/rests/modules/odl-device-notification?revision=2024-02-18","namespace":"urn:opendaylight:device:notification","conformance-type":"import"},{"name":"ietf-origin_2018-02-14","revision":"2018-02-14","schema":"/rests/modules/ietf-origin?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","schema":"/rests/modules/openflow-augments?revision=2015-02-25","namespace":"urn:opendaylight:openflow:augments","conformance-type":"import"},{"name":"iana-ssh-encryption-algs_2024-10-16","revision":"2024-10-16","schema":"/rests/modules/iana-ssh-encryption-algs?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","schema":"/rests/modules/ietf-truststore?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","schema":"/rests/modules/openconfig-bgp?revision=2015-10-09","namespace":"http://openconfig.net/yang/bgp","conformance-type":"import"},{"name":"bgp-peer-rpc_2018-03-29","revision":"2018-03-29","schema":"/rests/modules/bgp-peer-rpc?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","schema":"/rests/modules/pcep-server?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","schema":"/rests/modules/ipv4-packet?revision=2014-05-28","namespace":"urn:opendaylight:packet:ipv4","conformance-type":"import"},{"name":"distributed-datastore-provider_2025-01-30","revision":"2025-01-30","schema":"/rests/modules/distributed-datastore-provider?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","schema":"/rests/modules/network-topology-pcep?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","schema":"/rests/modules/opendaylight-group-types?revision=2013-10-18","namespace":"urn:opendaylight:group:types","conformance-type":"import"},{"name":"ovsdb_2015-01-05","revision":"2015-01-05","schema":"/rests/modules/ovsdb?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","schema":"/rests/modules/bgp-l3vpn-mcast?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","schema":"/rests/modules/sal-remote-augment?revision=2023-11-03","namespace":"urn:sal:restconf:event:subscription","conformance-type":"import"},{"name":"ethernet-packet_2014-05-28","revision":"2014-05-28","schema":"/rests/modules/ethernet-packet?revision=2014-05-28","namespace":"urn:opendaylight:packet:ethernet","conformance-type":"import"},{"name":"iana-routing-types_2022-08-19","revision":"2022-08-19","schema":"/rests/modules/iana-routing-types?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","schema":"/rests/modules/odl-mappingservice?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","schema":"/rests/modules/opendaylight-ipv6-arbitrary-bitmask-fields?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","schema":"/rests/modules/sal-flows-batch?revision=2016-03-14","namespace":"urn:opendaylight:flows:service","conformance-type":"import"},{"name":"bmp-monitor_2020-01-20","revision":"2020-01-20","schema":"/rests/modules/bmp-monitor?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","schema":"/rests/modules/ietf-tls-common?revision=2024-10-10","namespace":"urn:ietf:params:xml:ns:yang:ietf-tls-common","conformance-type":"import","feature":["hello-params","tls12","tls13"]},{"name":"openflow-types_2013-07-31","revision":"2013-07-31","schema":"/rests/modules/openflow-types?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","schema":"/rests/modules/ietf-netconf-with-defaults?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","schema":"/rests/modules/jsonrpc?revision=2016-12-01","namespace":"urn:opendaylight:jsonrpc","conformance-type":"import"},{"name":"odl-srm-ops_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-ops?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:ops","conformance-type":"import"},{"name":"odl-general-entity_2015-09-30","revision":"2015-09-30","schema":"/rests/modules/odl-general-entity?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","schema":"/rests/modules/path-computation?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","schema":"/rests/modules/iana-ssh-key-exchange-algs?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","schema":"/rests/modules/node-ssl-connection-error?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","schema":"/rests/modules/openflow-protocol?revision=2013-07-31","namespace":"urn:opendaylight:openflow:protocol","conformance-type":"import"},{"name":"network-concepts_2013-11-25","revision":"2013-11-25","schema":"/rests/modules/network-concepts?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","schema":"/rests/modules/bgp-test?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","schema":"/rests/modules/ted?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","schema":"/rests/modules/ietf-keystore?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","schema":"/rests/modules/aaa?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","schema":"/rests/modules/aaa-cert-rpc?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","schema":"/rests/modules/arp-handler-config?revision=2014-05-28","namespace":"urn:opendaylight:packet:arp-handler-config","conformance-type":"import"},{"name":"openconfig-types_2015-10-09","revision":"2015-10-09","schema":"/rests/modules/openconfig-types?revision=2015-10-09","namespace":"http://openconfig.net/yang/openconfig-types","conformance-type":"import"},{"name":"system-notifications_2013-09-27","revision":"2013-09-27","schema":"/rests/modules/system-notifications?revision=2013-09-27","namespace":"urn:opendaylight:openflow:system","conformance-type":"import"},{"name":"sal-flat-batch_2016-03-21","revision":"2016-03-21","schema":"/rests/modules/sal-flat-batch?revision=2016-03-21","namespace":"urn:opendaylight:flat-batch:service","conformance-type":"import"},{"name":"bgp-openconfig-extensions_2018-03-29","revision":"2018-03-29","schema":"/rests/modules/bgp-openconfig-extensions?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","schema":"/rests/modules/odl-mdsal-lowlevel-target?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","schema":"/rests/modules/loop-remover-config?revision=2014-05-28","namespace":"urn:opendaylight:packet:loop-remover-config","conformance-type":"import"},{"name":"notifications_2008-07-14","revision":"2008-07-14","schema":"/rests/modules/notifications?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","schema":"/rests/modules/bgp-mvpn?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","schema":"/rests/modules/sal-remote?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","schema":"/rests/modules/odl-lisp-sb?revision=2015-09-04","namespace":"urn:opendaylight:lfm:lisp-sb","conformance-type":"import"},{"name":"yang-ext_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/yang-ext?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","schema":"/rests/modules/opendaylight-multipart-types?revision=2017-01-12","namespace":"urn:opendaylight:multipart:types","conformance-type":"import"},{"name":"opendaylight-inventory_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/opendaylight-inventory?revision=2013-08-19","namespace":"urn:opendaylight:inventory","conformance-type":"import"},{"name":"people_2014-08-18","revision":"2014-08-18","schema":"/rests/modules/people?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","schema":"/rests/modules/sal-queue?revision=2015-03-05","namespace":"urn:opendaylight:queue:service","conformance-type":"import"},{"name":"sal-groups-batch_2016-03-15","revision":"2016-03-15","schema":"/rests/modules/sal-groups-batch?revision=2016-03-15","namespace":"urn:opendaylight:groups:service","conformance-type":"import"},{"name":"ipv6-packet_2014-05-28","revision":"2014-05-28","schema":"/rests/modules/ipv6-packet?revision=2014-05-28","namespace":"urn:opendaylight:packet:ipv6","conformance-type":"import"},{"name":"arbitrator-reconcile_2018-02-27","revision":"2018-02-27","schema":"/rests/modules/arbitrator-reconcile?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","schema":"/rests/modules/ietf-yang-metadata?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","schema":"/rests/modules/bgp-rib?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","schema":"/rests/modules/opendaylight-arbitrary-bitmask-fields?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","schema":"/rests/modules/network-pcep-topology-stats?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","schema":"/rests/modules/basic-rpc-test?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","schema":"/rests/modules/stp-status-aware-node-connector?revision=2014-07-14","namespace":"urn:opendaylight:l2switch:loopremover","conformance-type":"import"},{"name":"car-purchase_2014-08-18","revision":"2014-08-18","schema":"/rests/modules/car-purchase?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","schema":"/rests/modules/host-tracker-config?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","schema":"/rests/modules/opendaylight-meter-types?revision=2013-09-18","namespace":"urn:opendaylight:meter:types","conformance-type":"import"},{"name":"opendaylight-action-types_2013-11-12","revision":"2013-11-12","schema":"/rests/modules/opendaylight-action-types?revision=2013-11-12","namespace":"urn:opendaylight:action:types","conformance-type":"import"},{"name":"sal-role_2015-07-27","revision":"2015-07-27","schema":"/rests/modules/sal-role?revision=2015-07-27","namespace":"urn:opendaylight:role:service","conformance-type":"import"},{"name":"openflow-provider-config_2016-05-10","revision":"2016-05-10","schema":"/rests/modules/openflow-provider-config?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","schema":"/rests/modules/topology-tunnel-pcep-config?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","schema":"/rests/modules/odl-serviceutils-upgrade?revision=2018-07-02","namespace":"urn:opendaylight:serviceutils:upgrade","conformance-type":"import"},{"name":"opendaylight-match-types_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/opendaylight-match-types?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","schema":"/rests/modules/odl-inet-binary-types?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","schema":"/rests/modules/ietf-restconf-server?revision=2024-08-14","namespace":"urn:ietf:params:xml:ns:yang:ietf-restconf-server","conformance-type":"import","feature":["https-listen","http-listen"]},{"name":"reconciliation-result-state_2017-07-13","revision":"2017-07-13","schema":"/rests/modules/reconciliation-result-state?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","schema":"/rests/modules/ietf-routing-types?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","schema":"/rests/modules/onf-extensions?revision=2017-01-24","namespace":"urn:opendaylight:openflowplugin:extension:onf","conformance-type":"import"},{"name":"sal-table_2013-10-26","revision":"2013-10-26","schema":"/rests/modules/sal-table?revision=2013-10-26","namespace":"urn:opendaylight:table:service","conformance-type":"import"},{"name":"odl-bgp-policy_2020-01-20","revision":"2020-01-20","schema":"/rests/modules/odl-bgp-policy?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","schema":"/rests/modules/opendaylight-direct-statistics?revision=2016-05-11","namespace":"urn:opendaylight:direct:statistics","conformance-type":"import"},{"name":"openconfig-local-routing_2015-10-09","revision":"2015-10-09","schema":"/rests/modules/openconfig-local-routing?revision=2015-10-09","namespace":"http://openconfig.net/yang/local-routing","conformance-type":"import"},{"name":"programming_2015-07-20","revision":"2015-07-20","schema":"/rests/modules/programming?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","schema":"/rests/modules/bgp-types?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","schema":"/rests/modules/bgp-route-target-constrain?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","schema":"/rests/modules/opendaylight-port-types?revision=2013-09-25","namespace":"urn:opendaylight:flow:types:port","conformance-type":"import"},{"name":"sal-async-config_2017-06-19","revision":"2017-06-19","schema":"/rests/modules/sal-async-config?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","schema":"/rests/modules/aaa-password-service-config?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","schema":"/rests/modules/openconfig-bgp-types?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","schema":"/rests/modules/data-export-import?revision=2016-09-21","namespace":"urn:opendaylight:daexim","conformance-type":"import"},{"name":"topology-tunnel_2013-08-19","revision":"2013-08-19","schema":"/rests/modules/topology-tunnel?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","schema":"/rests/modules/ietf-yang-types?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","schema":"/rests/modules/opendaylight-queue-statistics?revision=2013-12-16","namespace":"urn:opendaylight:queue:statistics","conformance-type":"import"},{"name":"sal-bundle_2017-01-24","revision":"2017-01-24","schema":"/rests/modules/sal-bundle?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","schema":"/rests/modules/ietf-restconf-subscribed-notifications?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","schema":"/rests/modules/bgp-vpn-ipv6?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","schema":"/rests/modules/bmp-message?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","schema":"/rests/modules/sal-meters-batch?revision=2016-03-16","namespace":"urn:opendaylight:meters:service","conformance-type":"import"},{"name":"odl-entity-owners","revision":"","schema":"/rests/modules/odl-entity-owners","namespace":"urn:opendaylight:params:xml:ns:yang:controller:entity-owners","conformance-type":"import"},{"name":"ietf-http-server_2024-02-08","revision":"2024-02-08","schema":"/rests/modules/ietf-http-server?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","schema":"/rests/modules/sal-experimenter-mp-message?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","schema":"/rests/modules/topology-tunnel-pcep?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","schema":"/rests/modules/odl-pcep-topology-provider?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","schema":"/rests/modules/openconfig-bgp-policy?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","schema":"/rests/modules/odl-mdsal-lowlevel-common?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","schema":"/rests/modules/ospf-topology?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","schema":"/rests/modules/l2switch-config?revision=2014-05-28","namespace":"urn:opendaylight:l2switch:l2switch-config","conformance-type":"import"},{"name":"packet-processing_2013-07-09","revision":"2013-07-09","schema":"/rests/modules/packet-processing?revision=2013-07-09","namespace":"urn:opendaylight:packet:service","conformance-type":"import"},{"name":"openflow-configuration_2014-06-30","revision":"2014-06-30","schema":"/rests/modules/openflow-configuration?revision=2014-06-30","namespace":"urn:opendaylight:openflow:config","conformance-type":"import"},{"name":"odl-srm-rpcs_2018-06-26","revision":"2018-06-26","schema":"/rests/modules/odl-srm-rpcs?revision=2018-06-26","namespace":"urn:opendaylight:serviceutils:srm:rpc","conformance-type":"import"},{"name":"isis-topology_2013-10-21","revision":"2013-10-21","schema":"/rests/modules/isis-topology?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","schema":"/rests/modules/odl-pcep-types?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","schema":"/rests/modules/ietf-netconf-acm?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","schema":"/rests/modules/bgp-flowspec?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","schema":"/rests/modules/iana-crypt-hash?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","schema":"/rests/modules/openflow-extensible-match?revision=2015-02-25","namespace":"urn:opendaylight:openflow:oxm","conformance-type":"import"}],"module-set-id":"2"}}</msg>
<arg>${response.text}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:28.484413" elapsed="0.004533"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:28.484080" elapsed="0.004920"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:28.484048" elapsed="0.004977"/>
</if>
<if>
<branch type="IF" condition="&quot;${log_response}&quot; == &quot;True&quot;">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:28.491811" 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-25T23:32:28.489296" elapsed="0.002576"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:28.489081" elapsed="0.002839"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:28.489064" elapsed="0.002881"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:32:28.492564" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($additional_allowed_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-25T23:32:28.492108" elapsed="0.000483"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:28.492912" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:28.492661" elapsed="0.000341"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:32:28.493716" level="INFO">${allowed_status_codes_list} = []</msg>
<var>${allowed_status_codes_list}</var>
<arg>${additional_allowed_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-25T23:32:28.493176" elapsed="0.000568"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:28.493027" elapsed="0.000779"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:28.492643" elapsed="0.001185"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:32:28.494384" level="INFO">${status_codes_type} = list</msg>
<var>${status_codes_type}</var>
<arg>type($explicit_status_codes).__name__</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="PASS" start="2026-04-25T23:32:28.493976" elapsed="0.000435"/>
</kw>
<if>
<branch type="IF" condition="&quot;${status_codes_type}&quot;!=&quot;list&quot;">
<kw name="Create List" owner="BuiltIn">
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns a list containing given items.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:28.494751" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:28.494486" elapsed="0.000353"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:32:28.495506" level="INFO">${explicit_status_codes_list} = []</msg>
<var>${explicit_status_codes_list}</var>
<arg>${explicit_status_codes}</arg>
<doc>Returns the given values which can then be assigned to a variables.</doc>
<status status="PASS" start="2026-04-25T23:32:28.495011" elapsed="0.000528"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:28.494864" elapsed="0.000735"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:28.494464" elapsed="0.001158"/>
</if>
<kw name="Run Keyword And Return If" owner="BuiltIn">
<arg>"""${explicit_status_codes_list}""" != """${NO_STATUS_CODES}"""</arg>
<arg>Collections.List_Should_Contain_Value</arg>
<arg>${explicit_status_codes_list}</arg>
<arg>${response.status_code}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:32:28.495778" elapsed="0.000570"/>
</kw>
<kw name="Combine Lists" owner="Collections">
<msg time="2026-04-25T23:32:28.496969" level="INFO">${final_allowd_list} = [200, 201, 204]</msg>
<var>${final_allowd_list}</var>
<arg>${ALLOWED_STATUS_CODES}</arg>
<arg>${allowed_status_codes_list}</arg>
<doc>Combines the given ``lists`` together and returns the result.</doc>
<status status="PASS" start="2026-04-25T23:32:28.496505" elapsed="0.000491"/>
</kw>
<kw name="List Should Contain Value" owner="Collections">
<arg>${final_allowd_list}</arg>
<arg>${response.status_code}</arg>
<doc>Fails if the ``value`` is not found from ``list``.</doc>
<status status="PASS" start="2026-04-25T23:32:28.497138" elapsed="0.002641"/>
</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-25T23:32:28.483279" elapsed="0.016566"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:32:28.500024" elapsed="0.000017"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:32:28.499914" elapsed="0.000157"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:28.499896" elapsed="0.000196"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<msg time="2026-04-25T23:32:28.512910" 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-25T23:32:28.500224" elapsed="0.012726"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="PASS" start="2026-04-25T23:32:28.513004" elapsed="0.000038"/>
</return>
<msg time="2026-04-25T23:32:28.513174" 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-25T23:32:27.972478" elapsed="0.540722"/>
</kw>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-25T23:32:28.513264" elapsed="0.000026"/>
</return>
<msg time="2026-04-25T23:32:28.513413" 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-25T23:32:27.879530" elapsed="0.633917"/>
</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-25T23:32:28.513782" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:28.513532" elapsed="0.000359"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:28.513514" elapsed="0.000402"/>
</if>
<return>
<value>${response_text}</value>
<status status="PASS" start="2026-04-25T23:32:28.513948" elapsed="0.000026"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</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-25T23:32:27.873799" elapsed="0.640273"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-25T23:32:27.868802" elapsed="0.645312"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-25T23:32:27.868640" elapsed="0.645509"/>
</for>
<arg>${member_index_list}</arg>
<status status="PASS" start="2026-04-25T23:32:27.866764" elapsed="0.647449"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:27.866493" elapsed="0.647750"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:27.866478" elapsed="0.647789"/>
</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-25T23:32:28.514660" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:28.514322" elapsed="0.000413"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:28.514306" 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="PASS" start="2026-04-25T23:32:27.433093" elapsed="1.081714"/>
</kw>
<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="PASS" start="2026-04-25T23:31:57.232496" elapsed="31.282373"/>
</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-25T23:32:28.518089" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:32:28.517670" elapsed="0.000446"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:32:28.518643" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:32:28.518265" elapsed="0.000415"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-25T23:32:28.518747" elapsed="0.000031"/>
</return>
<msg time="2026-04-25T23:32:28.518907" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-25T23:32:28.517278" elapsed="0.001654"/>
</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-25T23:32:28.520001" level="INFO">${member_ip} = 10.30.171.166</msg>
<var>${member_ip}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:32:28.519731" elapsed="0.000295"/>
</kw>
<kw name="Run_Keyword_Preserve_Connection" owner="SSHKeywords">
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:32:28.520798" level="INFO">index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-25T23:32:28.520898" level="INFO">${current_connection} = index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-25T23:32:28.520645" 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-25T23:32:28.523496" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:28.523236" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:28.523217" elapsed="0.000358"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:32:28.523836" level="INFO">index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-25T23:32:28.523933" level="INFO">${current_ssh_connection} = index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-25T23:32:28.523723" elapsed="0.000236"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:28.524472" level="INFO">Attempting to execute command "netstat -pnatu | grep 2550" on remote system "10.30.171.166" by user "jenkins" with keyfile pass "any" and prompt "&gt;" and password ""</msg>
<arg>Attempting to execute command "${cmd}" on remote system "${system}" by user "${user}" with keyfile pass "${keyfile_pass}" and prompt "${prompt}" and password "${password}"</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:28.524102" elapsed="0.000421"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:32:28.525279" 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-25T23:32:28.524666" elapsed="0.000639"/>
</kw>
<kw name="Flexible_SSH_Login" owner="SSHKeywords">
<kw name="Get Length" owner="BuiltIn">
<msg time="2026-04-25T23:32:28.526403" level="INFO">Length is 0.</msg>
<msg time="2026-04-25T23:32:28.526480" level="INFO">${pwd_length} = 0</msg>
<var>${pwd_length}</var>
<arg>${password}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="PASS" start="2026-04-25T23:32:28.525948" 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-25T23:32:28.526676" elapsed="0.000512"/>
</kw>
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Login With Public Key" owner="SSHLibrary">
<msg time="2026-04-25T23:32:28.528452" level="INFO">Logging into '10.30.171.166:22' as 'jenkins'.</msg>
<msg time="2026-04-25T23:32:28.837102" level="INFO">Read output: Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.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 25 23:31:37 UTC 2026

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


Expanded Security Maintenance for Applications is not enabled.

0 updates can be applied immediately.

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


The list of available updates is more than a week old.
To check 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 25 23:31:57 2026 from 10.30.171.101
[?2004h[jenkins@releng-60306-7-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-25T23:32:28.527849" elapsed="0.309418"/>
</kw>
<msg time="2026-04-25T23:32:28.837412" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>SSHLibrary.Login With Public Key</arg>
<arg>${user}</arg>
<arg>${USER_HOME}/.ssh/${SSH_KEY}</arg>
<arg>${KEYFILE_PASS}</arg>
<arg>delay=${delay}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:32:28.527347" elapsed="0.310167"/>
</kw>
<arg>${user}</arg>
<arg>${password}</arg>
<doc>On active SSH session: if given non-empty password, do Login, else do Login With Public Key.</doc>
<status status="PASS" start="2026-04-25T23:32:28.525520" elapsed="0.312103"/>
</kw>
<kw name="Execute Command" owner="SSHLibrary">
<msg time="2026-04-25T23:32:28.838109" level="INFO">Executing command 'netstat -pnatu | grep 2550'.</msg>
<msg time="2026-04-25T23:32:28.850675" level="INFO">Command exited with return code 1.</msg>
<msg time="2026-04-25T23:32:28.851002" level="INFO">${stdout} = </msg>
<msg time="2026-04-25T23:32:28.851106" 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-25T23:32:28.837871" elapsed="0.013305"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="PASS" start="2026-04-25T23:32:28.851601" elapsed="0.000534"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:28.853341" 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-25T23:32:28.852567" elapsed="0.000879"/>
</kw>
<if>
<branch type="IF" condition="&quot;${return_stdout}&quot;!=&quot;True&quot;">
<return>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-25T23:32:28.853958" elapsed="0.000036"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:32:28.853624" elapsed="0.000441"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:28.853572" 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-25T23:32:28.854513" elapsed="0.000061"/>
</return>
<status status="PASS" start="2026-04-25T23:32:28.854268" elapsed="0.000381"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:28.854225" elapsed="0.000511"/>
</if>
<return>
<value>${stdout}</value>
<value>${stderr}</value>
<status status="NOT RUN" start="2026-04-25T23:32:28.854816" elapsed="0.000031"/>
</return>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:32:28.860468" elapsed="0.000387"/>
</kw>
<msg time="2026-04-25T23:32:28.860979" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:32:28.859259" elapsed="0.001819"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:28.861292" elapsed="0.000031"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:28.861637" elapsed="0.000033"/>
</kw>
<arg>${current_ssh_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:32:28.855616" elapsed="0.006167"/>
</kw>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Reduces the common work of running a command on a remote system to a single higher level
robot keyword, taking care to log in with a public key and. The command given is written and the return value
depends on the passed argument values of return_stdout (default: True) and return_stderr (default: False).
At least one should be True, or the keyword will exit and FAIL. If both are True, the resulting return value
will be a two element list containing both. Otherwise the resulting return value is a string.
No test conditions are checked.</doc>
<status status="PASS" start="2026-04-25T23:32:28.522670" elapsed="0.339261"/>
</kw>
<msg time="2026-04-25T23:32:28.862010" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run Command On Remote System</arg>
<arg>${system}</arg>
<arg>${cmd}</arg>
<arg>${user}</arg>
<arg>${password}</arg>
<arg>prompt=${prompt}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:32:28.522117" elapsed="0.339979"/>
</kw>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Call Run Comand On Remote System, but with default values suitable for Controller machine.</doc>
<status status="PASS" start="2026-04-25T23:32:28.521560" elapsed="0.340642"/>
</kw>
<msg time="2026-04-25T23:32:28.862258" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${keyword_name}</arg>
<arg>@{args}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:32:28.521075" elapsed="0.341357"/>
</kw>
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords" type="TEARDOWN">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:32:28.866514" elapsed="0.000161"/>
</kw>
<msg time="2026-04-25T23:32:28.866737" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:32:28.865933" 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="NOT RUN" start="2026-04-25T23:32:28.866952" elapsed="0.000028"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:28.867128" elapsed="0.000021"/>
</kw>
<arg>${current_connection.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:32:28.862864" elapsed="0.004351"/>
</kw>
<msg time="2026-04-25T23:32:28.867421" 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-25T23:32:28.520231" elapsed="0.347224"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:28.867918" level="INFO"/>
<arg>${output}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:28.867636" elapsed="0.000324"/>
</kw>
<return>
<value>${output}</value>
<status status="PASS" start="2026-04-25T23:32:28.868004" 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-25T23:32:28.519297" elapsed="0.348833"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-25T23:32:28.519130" elapsed="0.349038"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-25T23:32:28.518996" elapsed="0.349209"/>
</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-25T23:32:28.515127" elapsed="0.353138"/>
</kw>
<arg>wait_for_sync=True</arg>
<arg>timeout=${CLUSTER_BOOTUP_SYNC_TIMEOUT}</arg>
<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="PASS" start="2026-04-25T23:31:56.858045" elapsed="32.010271"/>
</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-25T23:32:28.869620" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:28.869249" elapsed="0.000448"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:28.869230" elapsed="0.000494"/>
</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-25T23:32:28.869875" elapsed="0.000354"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:32:28.875121" 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-25T23:32:28.874699" elapsed="0.000450"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="PASS" start="2026-04-25T23:32:28.875408" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-25T23:32:28.875238" elapsed="0.000227"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:28.875218" elapsed="0.000273"/>
</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-25T23:32:28.875652" 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-25T23:32:28.875834" 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-25T23:32:28.875994" elapsed="0.000019"/>
</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-25T23:32:28.876160" 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-25T23:32:28.876333" elapsed="0.000022"/>
</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-25T23:32:28.876492" 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-25T23:32:28.876672" elapsed="0.000041"/>
</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-25T23:32:28.874387" elapsed="0.002387"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:28.869041" elapsed="0.007859"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-25T23:32:28.868644" elapsed="0.008300"/>
</kw>
<doc>Start the newer ODL on background.</doc>
<tag>1node</tag>
<tag>carpeople</tag>
<status status="PASS" start="2026-04-25T23:31:56.806875" elapsed="32.070106"/>
</test>
<test id="s1-t12" name="Verify_Data_Is_Restored" line="171">
<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-25T23:32:28.880673" elapsed="0.000226"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-25T23:32:28.880417" 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-25T23:32:28.881910" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:32:28.881801" elapsed="0.000154"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:28.881783" elapsed="0.000193"/>
</if>
<kw name="Log_Message_To_Controller_Karaf" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-25T23:32:28.887246" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:32:28.886921" elapsed="0.000373"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:28.886903" elapsed="0.000412"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:32:28.888304" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:32:28.887928" elapsed="0.000402"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:32:28.888791" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:32:28.888478" elapsed="0.000338"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-25T23:32:28.888861" elapsed="0.000028"/>
</return>
<msg time="2026-04-25T23:32:28.889012" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-25T23:32:28.887546" 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-25T23:32:28.894560" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:32:28.894453" elapsed="0.000153"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:28.894434" 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-25T23:32:28.895736" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:32:28.895614" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:28.895596" elapsed="0.000207"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:32:28.896197" level="INFO">${karaf_connection_index} = 23</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:32:28.895935" elapsed="0.000288"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:32:28.896554" level="INFO">${current_connection_index} = 7</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:32:28.896368" elapsed="0.000211"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-25T23:32:28.897325" 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-25T23:32:28.897068" elapsed="0.000806">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-25T23:32:28.897989" level="INFO">${status_write} = FAIL</msg>
<msg time="2026-04-25T23:32:28.898032" 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-25T23:32:28.896746" elapsed="0.001308"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-25T23:32:28.898789" 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-25T23:32:28.898532" elapsed="0.000742">Cannot open session, you need to establish a connection first.</status>
</kw>
<msg time="2026-04-25T23:32:28.899382" level="INFO">${status_wait} = FAIL</msg>
<msg time="2026-04-25T23:32:28.899502" 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-25T23:32:28.898208" elapsed="0.001319"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<msg time="2026-04-25T23:32:28.900289" level="FAIL">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Verify_Data_Is_Restored"</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-25T23:32:28.899843" elapsed="0.000655">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Verify_Data_Is_Restored"</status>
</kw>
<status status="FAIL" start="2026-04-25T23:32:28.899606" elapsed="0.000965">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Verify_Data_Is_Restored"</status>
</branch>
<status status="FAIL" start="2026-04-25T23:32:28.899587" elapsed="0.001016">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Verify_Data_Is_Restored"</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-25T23:32:28.900805" 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-25T23:32:28.901020" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:28.900892" elapsed="0.000180"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:32:28.900876" elapsed="0.000217"/>
</if>
<return>
<value>${message_wait}</value>
<status status="NOT RUN" start="2026-04-25T23:32:28.901125" 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">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:32:28.903361" elapsed="0.000231"/>
</kw>
<msg time="2026-04-25T23:32:28.903669" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:32:28.902352" elapsed="0.001484"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:28.904108" elapsed="0.000047"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:28.904496" elapsed="0.000045"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:32:28.901875" elapsed="0.002796"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-25T23:32:28.901372" 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="FAIL" start="2026-04-25T23:32:28.895290" elapsed="0.009535">Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Verify_Data_Is_Restored"</status>
</kw>
<msg time="2026-04-25T23:32:28.904923" level="INFO">${status} = FAIL</msg>
<msg time="2026-04-25T23:32:28.904967" level="INFO">${message} = Failed to send the command: log:log "ROBOT MESSAGE: Starting test controller-akka1.txt.Verify_Data_Is_Restored"</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:32:28.894786" elapsed="0.010203"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-25T23:32:28.905169" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:32:28.905064" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:28.905046" elapsed="0.000186"/>
</if>
<kw name="Open_Controller_Karaf_Console_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-25T23:32:28.906026" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:32:28.905910" elapsed="0.000168"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:28.905893" elapsed="0.000207"/>
</if>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:32:28.906400" level="INFO">index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<msg time="2026-04-25T23:32:28.906503" level="INFO">${current_ssh_connection_object} = index=7
host=10.30.171.166
alias=None
port=22
timeout=10 seconds
newline=

prompt=&gt;
term_type=vt100
width=80
height=24
path_separator=/
encoding=UTF-8
escape_ansi=False
encoding_errors=strict</msg>
<var>${current_ssh_connection_object}</var>
<doc>Returns information about the connection.</doc>
<status status="PASS" start="2026-04-25T23:32:28.906236" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:28.906938" level="INFO">{1: 23}</msg>
<arg>${connection_index_dict}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:28.906667" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:28.907354" level="INFO">1</msg>
<arg>${member_index}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:28.907119" elapsed="0.000277"/>
</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-25T23:32:28.907960" elapsed="0.000222"/>
</kw>
<msg time="2026-04-25T23:32:28.908278" level="INFO">${status} = PASS</msg>
<msg time="2026-04-25T23:32:28.908324" level="INFO">${old_connection_index} = 23</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-25T23:32:28.907578" elapsed="0.000768"/>
</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-25T23:32:28.909133" elapsed="0.000223"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-25T23:32:28.910233" 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-25T23:32:28.909976" elapsed="0.001223">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-25T23:32:28.909509" elapsed="0.001783"/>
</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-25T23:32:28.912016" elapsed="0.000171"/>
</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-25T23:32:28.911461" elapsed="0.000797"/>
</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-25T23:32:28.908623" elapsed="0.003680"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:28.908420" elapsed="0.003968"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:28.908402" elapsed="0.004013"/>
</if>
<kw name="Resolve_IP_Address_For_Member" owner="ClusterManagement">
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:32:28.913202" level="INFO">${ip_address} = 10.30.171.166</msg>
<var>${ip_address}</var>
<arg>dictionary=${ClusterManagement__index_to_ip_mapping}</arg>
<arg>key=${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:32:28.912938" elapsed="0.000291"/>
</kw>
<return>
<value>${ip_address}</value>
<status status="PASS" start="2026-04-25T23:32:28.913277" elapsed="0.000030"/>
</return>
<msg time="2026-04-25T23:32:28.913427" level="INFO">${odl_ip} = 10.30.171.166</msg>
<var>${odl_ip}</var>
<arg>${member_index}</arg>
<doc>Return node IP address of given index.</doc>
<status status="PASS" start="2026-04-25T23:32:28.912610" 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-25T23:32:28.913592" elapsed="0.000439"/>
</kw>
<kw name="Get Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:32:28.914291" level="INFO">index=26
host=10.30.171.166
alias=None
port=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-25T23:32:28.914388" level="INFO">${karaf_connection_object} = index=26
host=10.30.171.166
alias=None
port=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-25T23:32:28.914187" elapsed="0.000226"/>
</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-25T23:32:28.914550" elapsed="0.002349"/>
</kw>
<kw name="Login" owner="SSHLibrary">
<msg time="2026-04-25T23:32:28.917318" level="INFO">Logging into '10.30.171.166:8101' as 'karaf'.</msg>
<msg time="2026-04-25T23:32:29.471471" 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-25T23:32:28.917052" elapsed="0.554588"/>
</kw>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:32:29.476218" elapsed="0.000291"/>
</kw>
<msg time="2026-04-25T23:32:29.476680" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:32:29.475213" elapsed="0.001629"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:29.476999" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:29.477150" elapsed="0.000020"/>
</kw>
<arg>${current_ssh_connection_object.index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:32:29.472788" elapsed="0.004445"/>
</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-25T23:32:29.472061" elapsed="0.005221"/>
</kw>
<arg>${member_index}</arg>
<doc>If there is a stored ssh connection index of connection to the controller's karaf console for 1,
close the previous connection. In any case create a new connection
to karaf console for 1, set correct prompt set and login to karaf console.
Store connection index for 1 and restore the previous active connection.</doc>
<status status="PASS" start="2026-04-25T23:32:28.905605" elapsed="0.571729"/>
</kw>
<kw name="Execute_Controller_Karaf_Command_On_Background" owner="KarafKeywords">
<if>
<branch type="IF" condition="'${IS_KARAF_APPL}' == 'False'">
<return>
<value>Not A Karaf App</value>
<status status="NOT RUN" start="2026-04-25T23:32:29.478128" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:32:29.478014" elapsed="0.000165"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:29.477990" elapsed="0.000211"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:32:29.478557" level="INFO">${karaf_connection_index} = 26</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:32:29.478332" elapsed="0.000251"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:32:29.479019" level="INFO">${current_connection_index} = 7</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:32:29.478853" elapsed="0.000191"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-25T23:32:29.567419" level="INFO">@root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "o "l "l "e "r "- "a "k "k "a "1 ". "[78Ct "[A[78Cx</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-25T23:32:29.479517" elapsed="0.088004"/>
</kw>
<msg time="2026-04-25T23:32:29.567668" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-25T23:32:29.567752" level="INFO">${message_write} = @root&gt;log:log " "R "O "B "O "T "[C "M "E "S "S "A "G "E ": "[C "S "t "a "r "t "i "n "g "[C "t "e "s "t "[C "c "o "n "t "r "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-25T23:32:29.479189" elapsed="0.088793"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-25T23:32:29.611844" level="INFO">"t ". "V "e "r "i "f "y "_ "D "a "t "a "_ "I "s "_ "R "e "s "t "o "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-25T23:32:29.568528" elapsed="0.043399"/>
</kw>
<msg time="2026-04-25T23:32:29.612048" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-25T23:32:29.612106" level="INFO">${message_wait} =  "t ". "V "e "r "i "f "y "_ "D "a "t "a "_ "I "s "_ "R "e "s "t "o "r "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                 ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:32:29.568173" elapsed="0.043983"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:29.612505" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:29.612250" elapsed="0.000318"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:29.612229" elapsed="0.000365"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:29.613052" level="INFO"> "t ". "V "e "r "i "f "y "_ "D "a "t "a "_ "I "s "_ "R "e "s "t "o "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-25T23:32:29.612769" elapsed="0.000344"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:29.613389" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:29.613184" elapsed="0.000258"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:29.613165" elapsed="0.000299"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-25T23:32:29.613498" elapsed="0.000040"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:32:29.617582" elapsed="0.000301"/>
</kw>
<msg time="2026-04-25T23:32:29.618017" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:32:29.616616" elapsed="0.001500"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:29.618269" elapsed="0.000022"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:29.618425" elapsed="0.000021"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:32:29.614300" elapsed="0.004217"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-25T23:32:29.613779" elapsed="0.004799"/>
</kw>
<msg time="2026-04-25T23:32:29.618724" level="INFO">${message} =  "t ". "V "e "r "i "f "y "_ "D "a "t "a "_ "I "s "_ "R "e "s "t "o "r "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                 ...</msg>
<var>${message}</var>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-25T23:32:29.477670" elapsed="0.141095"/>
</kw>
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-25T23:32:29.618812" elapsed="0.000029"/>
</return>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Attemp to send command to karaf for ${member_index}, if fail then open connection and try again.</doc>
<status status="PASS" start="2026-04-25T23:32:28.894113" elapsed="0.724821"/>
</kw>
<msg time="2026-04-25T23:32:29.619051" level="INFO">${status} = PASS</msg>
<msg time="2026-04-25T23:32:29.619099" level="INFO">${output} =  "t ". "V "e "r "i "f "y "_ "D "a "t "a "_ "I "s "_ "R "e "s "t "o "r "e "d "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                 ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:32:28.889395" elapsed="0.729740"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:29.619457" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:29.619213" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:29.619195" elapsed="0.000344"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-25T23:32:28.889265" elapsed="0.730298"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-25T23:32:28.889092" elapsed="0.730503"/>
</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-25T23:32:28.886545" elapsed="0.733107"/>
</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-25T23:32:28.881499" elapsed="0.738227"/>
</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-25T23:32:28.881090" elapsed="0.738682"/>
</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-25T23:32:28.878123" elapsed="0.741699"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check_Restored_Data">
<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-25T23:32:29.665483" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:32:29.665039" elapsed="0.000477"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:32:29.666329" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:32:29.666024" elapsed="0.000387">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:32:29.666506" 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-25T23:32:29.665678" elapsed="0.000853"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:32:29.667080" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:32:29.666700" elapsed="0.000407"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:32:29.667398" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:32:29.667575" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:32:29.667255" elapsed="0.000345"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:29.668004" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:29.667761" 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-25T23:32:29.669074" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:29.668767" elapsed="0.000353"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:32:29.669544" 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-25T23:32:29.669270" 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-25T23:32:29.669912" 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-25T23:32:29.670340" 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-25T23:32:29.670510" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:32:29.669787" elapsed="0.000780"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:32:29.669624" elapsed="0.000974"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:32:29.670645" elapsed="0.000032"/>
</return>
<msg time="2026-04-25T23:32:29.670828" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:32:29.668441" elapsed="0.002413"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:29.668124" elapsed="0.002763"/>
</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-25T23:32:29.671049" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:29.670912" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:29.668102" elapsed="0.003022"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:32:29.671719" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:32:29.671259" elapsed="0.000489"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:32:29.671797" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:32:29.664313" elapsed="0.007617"/>
</kw>
<msg time="2026-04-25T23:32:29.671987" 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-25T23:32:29.652134" elapsed="0.019901"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:29.683753" elapsed="0.000082"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:29.695648" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:29.707506" 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-25T23:32:29.707703" 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-25T23:32:29.707868" 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-25T23:32:29.708218" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:29.708086" elapsed="0.000186"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:32:29.708072" 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-25T23:32:29.708423" 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-25T23:32:29.708576" 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-25T23:32:29.708743" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:32:29.708043" elapsed="0.000754"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:32:29.707943" elapsed="0.000878"/>
</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-25T23:32:29.708955" elapsed="0.000053"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:32:29.709069" elapsed="0.000016"/>
</return>
<msg time="2026-04-25T23:32:29.709181" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:32:29.648114" elapsed="0.061092"/>
</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-25T23:32:29.710413" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:32:29.710175" elapsed="0.000301">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:32:29.710567" 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-25T23:32:29.709850" elapsed="0.000741"/>
</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-25T23:32:29.710916" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:29.710660" elapsed="0.000312"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:32:29.711446" 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-25T23:32:29.711157" elapsed="0.000314"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:29.710996" elapsed="0.000553"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:29.710642" elapsed="0.000931"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:32:29.713833" 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-25T23:32:29.711730" elapsed="0.002129"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:32:29.713910" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:32:29.714062" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:32:29.709519" elapsed="0.004567"/>
</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-25T23:32:29.715265" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:32:29.715021" elapsed="0.000306">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:32:29.715419" 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-25T23:32:29.714699" elapsed="0.000745"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:32:29.715645" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-25T23:32:29.715512" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:29.715494" elapsed="0.000255"/>
</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-25T23:32:29.715886" 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-25T23:32:29.716045" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:32:29.716109" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:32:29.718166" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:32:29.714376" elapsed="0.003817"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:29.719557" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:29.719309" elapsed="0.000293"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:29.720005" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:29.719759" 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-25T23:32:29.747100" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:32:29.747672" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Set-Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0; Path=/rests; HttpOnly, rememberMe=deleteMe; Path=/rests; Max-Age=0; Expires=Fri, 24-Apr-2026 23:32:29 GMT; SameSite=lax', 'Expires': 'Thu, 01 Jan 1970 00:00:00 GMT', 'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:32:29.747954" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:32:29.722160" elapsed="0.026584">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:32:29.720113" elapsed="0.028812">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:32:29.749409" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:29.749009" elapsed="0.000545"/>
</branch>
<status status="FAIL" start="2026-04-25T23:32:29.720096" elapsed="0.029510">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:32:29.750355" elapsed="0.000034"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:32:29.750538" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:32:29.750486" elapsed="0.000108"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:32:29.750463" 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-25T23:32:29.750821" elapsed="0.000030"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:32:29.750918" elapsed="0.000020"/>
</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-25T23:32:29.718491" elapsed="0.032620">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:32:29.751215" elapsed="0.000021"/>
</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-25T23:32:29.630334" elapsed="0.121011">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:32:29.751722" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:29.751472" elapsed="0.000351"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:32:29.751449" elapsed="0.000406"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:32:29.751899" elapsed="0.000021"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:32:29.624378" elapsed="0.127653">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:29.752248" elapsed="0.000030"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:32:29.620517" elapsed="0.131880">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:32:34.803806" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:32:34.803357" elapsed="0.000486"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:32:34.804799" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:32:34.804451" elapsed="0.000433">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:32:34.804996" 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-25T23:32:34.804031" elapsed="0.000999"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:32:34.805590" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:32:34.805192" elapsed="0.000427"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:32:34.805937" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:32:34.806133" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:32:34.805786" elapsed="0.000379"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:34.806574" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:34.806322" 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-25T23:32:34.807643" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:34.807383" elapsed="0.000322"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:32:34.808164" 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-25T23:32:34.807860" elapsed="0.000338"/>
</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-25T23:32:34.808556" 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-25T23:32:34.808801" 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-25T23:32:34.808974" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:32:34.808422" elapsed="0.000692"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:32:34.808261" elapsed="0.000892"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:32:34.809207" elapsed="0.000037"/>
</return>
<msg time="2026-04-25T23:32:34.809389" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:32:34.807062" elapsed="0.002353"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:34.806724" elapsed="0.002725"/>
</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-25T23:32:34.809614" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:34.809475" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:34.806679" elapsed="0.003047"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:32:34.810341" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:32:34.809865" elapsed="0.000503"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:32:34.810438" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:32:34.802680" elapsed="0.007886"/>
</kw>
<msg time="2026-04-25T23:32:34.810621" 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-25T23:32:34.790235" elapsed="0.020439"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:34.823207" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:34.835151" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:34.846894" 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-25T23:32:34.847105" 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-25T23:32:34.847281" 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-25T23:32:34.847702" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:34.847546" elapsed="0.000213"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:32:34.847530" 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-25T23:32:34.847919" 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-25T23:32:34.848074" 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-25T23:32:34.848228" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:32:34.847490" elapsed="0.000789"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:32:34.847367" 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-25T23:32:34.848441" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:32:34.848589" elapsed="0.000018"/>
</return>
<msg time="2026-04-25T23:32:34.848747" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:32:34.786039" elapsed="0.062752"/>
</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-25T23:32:34.850190" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:32:34.849895" elapsed="0.000373">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:32:34.850362" 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-25T23:32:34.849498" elapsed="0.000889"/>
</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-25T23:32:34.850727" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:34.850457" elapsed="0.000327"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:32:34.851267" 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-25T23:32:34.850976" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:34.850808" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:34.850439" elapsed="0.000909"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:32:34.853675" 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-25T23:32:34.851484" elapsed="0.002231"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:32:34.853770" elapsed="0.000032"/>
</return>
<msg time="2026-04-25T23:32:34.853928" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:32:34.849147" elapsed="0.004806"/>
</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-25T23:32:34.855141" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:32:34.854905" elapsed="0.000299">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:32:34.855297" 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-25T23:32:34.854562" elapsed="0.000759"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:32:34.855531" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-25T23:32:34.855390" elapsed="0.000200"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:34.855372" elapsed="0.000242"/>
</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-25T23:32:34.855764" 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-25T23:32:34.855925" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:32:34.855988" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:32:34.857994" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:32:34.854249" elapsed="0.003771"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:34.859394" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:34.859140" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:34.859844" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:34.859579" 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-25T23:32:34.875335" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:32:34.875582" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:32:34.876003" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:32:34.862410" elapsed="0.014525">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:32:34.859952" elapsed="0.017182">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:32:34.877572" elapsed="0.000048"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:34.877212" elapsed="0.000531"/>
</branch>
<status status="FAIL" start="2026-04-25T23:32:34.859934" elapsed="0.017861">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:32:34.878596" elapsed="0.000055"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:32:34.878918" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:32:34.878835" elapsed="0.000174"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:32:34.878795" 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-25T23:32:34.879344" elapsed="0.000044"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:32:34.879493" elapsed="0.000032"/>
</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-25T23:32:34.858326" elapsed="0.021424">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:32:34.879916" elapsed="0.000033"/>
</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-25T23:32:34.767905" elapsed="0.112217">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:32:34.880707" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:34.880321" elapsed="0.000571"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:32:34.880285" elapsed="0.000669"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:32:34.881045" elapsed="0.000036"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:32:34.760637" elapsed="0.120627">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:34.881610" elapsed="0.000046"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:32:34.753155" elapsed="0.128724">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:32:39.931554" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:32:39.931159" elapsed="0.000430"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:32:39.932349" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:32:39.932090" elapsed="0.000338">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:32:39.932521" 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-25T23:32:39.931766" elapsed="0.000779"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:32:39.933096" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:32:39.932714" elapsed="0.000409"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:32:39.933495" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:32:39.933656" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:32:39.933348" elapsed="0.000348"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:39.934127" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:39.933844" elapsed="0.000330"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:39.935107" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:39.934857" elapsed="0.000295"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:32:39.935565" 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-25T23:32:39.935298" 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-25T23:32:39.935934" 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-25T23:32:39.936129" 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-25T23:32:39.936290" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:32:39.935809" elapsed="0.000537"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:32:39.935647" elapsed="0.000729"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:32:39.936425" elapsed="0.000034"/>
</return>
<msg time="2026-04-25T23:32:39.936592" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:32:39.934537" elapsed="0.002080"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:39.934249" elapsed="0.002400"/>
</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-25T23:32:39.936823" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:39.936673" elapsed="0.000204"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:39.934225" elapsed="0.002673"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:32:39.937463" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:32:39.937027" elapsed="0.000462"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:32:39.937537" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:32:39.930550" elapsed="0.007108"/>
</kw>
<msg time="2026-04-25T23:32:39.937726" 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-25T23:32:39.918516" elapsed="0.019258"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:39.952567" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:39.964506" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:39.976095" 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-25T23:32:39.976312" 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-25T23:32:39.976478" 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-25T23:32:39.976850" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:39.976709" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:32:39.976680" elapsed="0.000247"/>
</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-25T23:32:39.977053" 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-25T23:32:39.977207" 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-25T23:32:39.977358" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:32:39.976652" elapsed="0.000758"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:32:39.976552" elapsed="0.000883"/>
</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-25T23:32:39.977566" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:32:39.977642" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:32:39.977771" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:32:39.914420" elapsed="0.063376"/>
</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-25T23:32:39.979041" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:32:39.978804" elapsed="0.000303">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:32:39.979199" 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-25T23:32:39.978457" 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-25T23:32:39.979524" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:39.979290" elapsed="0.000289"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:32:39.980073" 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-25T23:32:39.979783" elapsed="0.000315"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:39.979603" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:39.979273" elapsed="0.000881"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:32:39.982431" 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-25T23:32:39.980289" elapsed="0.002169"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:32:39.982509" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:32:39.982661" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:32:39.978122" elapsed="0.004579"/>
</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-25T23:32:39.983871" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:32:39.983620" elapsed="0.000313">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:32:39.984024" 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-25T23:32:39.983303" elapsed="0.000746"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:32:39.984251" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-25T23:32:39.984117" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:39.984099" elapsed="0.000234"/>
</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-25T23:32:39.984465" 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-25T23:32:39.984665" elapsed="0.000034"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:32:39.984747" elapsed="0.000017"/>
</return>
<msg time="2026-04-25T23:32:39.986745" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:32:39.982996" elapsed="0.003775"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:39.988119" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:39.987872" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:39.988544" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:39.988303" 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-25T23:32:40.000169" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:32:40.000308" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:32:40.000403" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:32:39.990842" elapsed="0.010162">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:32:39.988652" elapsed="0.012530">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:32:40.001566" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:40.001254" elapsed="0.000492"/>
</branch>
<status status="FAIL" start="2026-04-25T23:32:39.988634" elapsed="0.013166">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:32:40.002651" elapsed="0.000095"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:32:40.002988" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:32:40.002907" elapsed="0.000171"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:32:40.002869" elapsed="0.000256"/>
</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-25T23:32:40.003414" elapsed="0.000047"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:32:40.003567" elapsed="0.000033"/>
</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-25T23:32:39.987066" elapsed="0.016765">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:32:40.003999" elapsed="0.000034"/>
</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-25T23:32:39.896848" elapsed="0.107361">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:32:40.004808" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:40.004413" elapsed="0.000555"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:32:40.004376" elapsed="0.000644"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:32:40.005090" elapsed="0.000032"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:32:39.889645" elapsed="0.115657">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:40.005646" elapsed="0.000076"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:32:39.882572" elapsed="0.123421">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:32:45.058384" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:32:45.057956" elapsed="0.000462"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:32:45.059173" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:32:45.058919" elapsed="0.000328">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:32:45.059341" 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-25T23:32:45.058580" elapsed="0.000786"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:32:45.059918" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:32:45.059519" elapsed="0.000426"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:32:45.060234" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:32:45.060405" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:32:45.060094" elapsed="0.000335"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:45.060838" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:45.060577" 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-25T23:32:45.061826" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:45.061559" elapsed="0.000311"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:32:45.062332" 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-25T23:32:45.062044" elapsed="0.000314"/>
</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-25T23:32:45.062680" elapsed="0.000036"/>
</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-25T23:32:45.062889" 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-25T23:32:45.063050" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:32:45.062557" elapsed="0.000548"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:32:45.062414" elapsed="0.000722"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:32:45.063182" elapsed="0.000033"/>
</return>
<msg time="2026-04-25T23:32:45.063346" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:32:45.061255" elapsed="0.002116"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:45.060968" elapsed="0.002435"/>
</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-25T23:32:45.063560" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:45.063427" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:45.060944" elapsed="0.002691"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:32:45.064239" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:32:45.063792" elapsed="0.000474"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:32:45.064314" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:32:45.057339" elapsed="0.007095"/>
</kw>
<msg time="2026-04-25T23:32:45.064486" 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-25T23:32:45.045332" elapsed="0.019200"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:45.076439" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:45.088127" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:45.099697" 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-25T23:32:45.099882" 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-25T23:32:45.100042" 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-25T23:32:45.100390" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:45.100259" elapsed="0.000186"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:32:45.100243" 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-25T23:32:45.100595" 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-25T23:32:45.100762" 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-25T23:32:45.100916" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:32:45.100215" elapsed="0.000754"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:32:45.100117" elapsed="0.000877"/>
</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-25T23:32:45.101126" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:32:45.101199" elapsed="0.000016"/>
</return>
<msg time="2026-04-25T23:32:45.101309" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:32:45.041262" elapsed="0.060073"/>
</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-25T23:32:45.102560" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:32:45.102314" elapsed="0.000312">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:32:45.102734" 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-25T23:32:45.101970" 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-25T23:32:45.103063" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:45.102829" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:32:45.103632" 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-25T23:32:45.103299" elapsed="0.000359"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:45.103142" elapsed="0.000566"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:45.102811" elapsed="0.000920"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:32:45.105967" 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-25T23:32:45.103879" elapsed="0.002114"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:32:45.106069" elapsed="0.000030"/>
</return>
<msg time="2026-04-25T23:32:45.106224" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:32:45.101643" elapsed="0.004606"/>
</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-25T23:32:45.107417" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:32:45.107188" elapsed="0.000291">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:32:45.107572" 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-25T23:32:45.106867" elapsed="0.000729"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:32:45.107814" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-25T23:32:45.107665" elapsed="0.000209"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:45.107647" elapsed="0.000251"/>
</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-25T23:32:45.108032" 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-25T23:32:45.108191" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:32:45.108255" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:32:45.110222" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:32:45.106539" elapsed="0.003710"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:45.111589" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:45.111344" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:45.112027" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:45.111789" 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-25T23:32:45.122590" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:32:45.122749" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:32:45.122858" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:32:45.114117" elapsed="0.009552">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:32:45.112135" elapsed="0.011756">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:32:45.124286" elapsed="0.000061"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:45.123965" elapsed="0.000487"/>
</branch>
<status status="FAIL" start="2026-04-25T23:32:45.112117" elapsed="0.012390">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:32:45.125349" elapsed="0.000057"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:32:45.125641" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:32:45.125559" elapsed="0.000204"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:32:45.125522" 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-25T23:32:45.126148" elapsed="0.000050"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:32:45.126384" 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-25T23:32:45.110543" elapsed="0.016123">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:32:45.126921" elapsed="0.000042"/>
</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-25T23:32:45.023578" elapsed="0.103578">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:32:45.127838" elapsed="0.000064"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:45.127366" elapsed="0.000649"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:32:45.127326" elapsed="0.000741"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:32:45.128141" elapsed="0.000033"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:32:45.015870" elapsed="0.112510">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:45.128778" elapsed="0.000048"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:32:45.006754" elapsed="0.122268">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:32:50.182458" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:32:50.182057" elapsed="0.000436"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:32:50.183272" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:32:50.183011" elapsed="0.000340">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:32:50.183463" 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-25T23:32:50.182667" elapsed="0.000823"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:32:50.184045" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:32:50.183642" elapsed="0.000430"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:32:50.184367" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:32:50.184534" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:32:50.184224" elapsed="0.000335"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:50.184964" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:50.184716" 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-25T23:32:50.186007" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:50.185748" elapsed="0.000303"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:32:50.186471" 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-25T23:32:50.186198" 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-25T23:32:50.186838" elapsed="0.000029"/>
</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-25T23:32:50.187047" 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-25T23:32:50.187208" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:32:50.186711" elapsed="0.000612"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:32:50.186551" elapsed="0.000807"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:32:50.187423" elapsed="0.000040"/>
</return>
<msg time="2026-04-25T23:32:50.187617" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:32:50.185413" elapsed="0.002230"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:50.185088" elapsed="0.002589"/>
</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-25T23:32:50.187897" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:50.187726" elapsed="0.000244"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:50.185062" elapsed="0.002933"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:32:50.188634" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:32:50.188167" elapsed="0.000548"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:32:50.188804" elapsed="0.000044"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:32:50.181410" elapsed="0.007561"/>
</kw>
<msg time="2026-04-25T23:32:50.189041" 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-25T23:32:50.168892" elapsed="0.020211"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:50.201818" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:50.214200" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:50.226720" 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-25T23:32:50.226905" 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-25T23:32:50.227177" 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-25T23:32:50.227558" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:50.227414" elapsed="0.000200"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:32:50.227393" 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-25T23:32:50.227785" 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-25T23:32:50.227942" 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-25T23:32:50.228185" elapsed="0.000026"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:32:50.227363" elapsed="0.000884"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:32:50.227262" elapsed="0.001010"/>
</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-25T23:32:50.228446" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:32:50.228524" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:32:50.228634" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:32:50.164642" elapsed="0.064017"/>
</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-25T23:32:50.229889" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:32:50.229634" elapsed="0.000320">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:32:50.230046" 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-25T23:32:50.229308" elapsed="0.000763"/>
</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-25T23:32:50.230380" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:50.230145" elapsed="0.000291"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:32:50.230983" 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-25T23:32:50.230674" elapsed="0.000336"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:50.230459" elapsed="0.000586"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:50.230127" elapsed="0.000939"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:32:50.233367" 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-25T23:32:50.231202" elapsed="0.002192"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:32:50.233445" elapsed="0.000028"/>
</return>
<msg time="2026-04-25T23:32:50.233597" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:32:50.228989" elapsed="0.004633"/>
</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-25T23:32:50.234902" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:32:50.234576" elapsed="0.000389">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:32:50.235065" 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-25T23:32:50.234242" elapsed="0.000847"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:32:50.235304" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-25T23:32:50.235157" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:50.235139" elapsed="0.000259"/>
</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-25T23:32:50.235553" elapsed="0.000064"/>
</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-25T23:32:50.235779" elapsed="0.000022"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:32:50.235860" elapsed="0.000016"/>
</return>
<msg time="2026-04-25T23:32:50.237864" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:32:50.233933" elapsed="0.003957"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:50.239292" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:50.239040" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:50.239774" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:50.239498" 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-25T23:32:50.249722" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:32:50.249900" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:32:50.250009" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:32:50.241947" elapsed="0.008438">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:32:50.239895" elapsed="0.010571">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:32:50.250644" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:50.250499" elapsed="0.000228"/>
</branch>
<status status="FAIL" start="2026-04-25T23:32:50.239877" elapsed="0.010876">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:32:50.251117" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:32:50.251249" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:32:50.251212" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:32:50.251195" 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-25T23:32:50.251474" elapsed="0.000026"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:32:50.251552" elapsed="0.000016"/>
</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-25T23:32:50.238195" elapsed="0.013464">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:32:50.251758" elapsed="0.000016"/>
</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-25T23:32:50.146390" elapsed="0.105466">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:32:50.252123" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:50.251951" elapsed="0.000245"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:32:50.251933" elapsed="0.000286"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:32:50.252251" elapsed="0.000015"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:32:50.138869" elapsed="0.113479">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:50.252506" elapsed="0.000022"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:32:50.129837" elapsed="0.122777">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:32:55.303771" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:32:55.303348" elapsed="0.000459"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:32:55.304572" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:32:55.304306" elapsed="0.000349">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:32:55.304768" 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-25T23:32:55.303975" elapsed="0.000818"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:32:55.305437" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:32:55.305035" elapsed="0.000432"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:32:55.305783" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:32:55.305947" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:32:55.305618" elapsed="0.000354"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:55.306387" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:55.306117" 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-25T23:32:55.307417" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:55.307153" elapsed="0.000312"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:32:55.307908" 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-25T23:32:55.307617" elapsed="0.000318"/>
</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-25T23:32:55.308271" 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-25T23:32:55.308466" 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-25T23:32:55.308630" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:32:55.308141" elapsed="0.000561"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:32:55.307992" elapsed="0.000744"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:32:55.308785" elapsed="0.000034"/>
</return>
<msg time="2026-04-25T23:32:55.308982" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:32:55.306833" elapsed="0.002180"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:55.306514" elapsed="0.002535"/>
</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-25T23:32:55.309216" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:55.309075" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:55.306489" elapsed="0.002803"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:32:55.309881" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:32:55.309422" elapsed="0.000485"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:32:55.309956" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:32:55.302725" elapsed="0.007352"/>
</kw>
<msg time="2026-04-25T23:32:55.310130" 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-25T23:32:55.290549" elapsed="0.019629"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:55.322052" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:55.334515" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:55.346308" elapsed="0.000067"/>
</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-25T23:32:55.346537" 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-25T23:32:55.346717" 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-25T23:32:55.347079" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:55.346945" elapsed="0.000188"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:32:55.346930" 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-25T23:32:55.347286" 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-25T23:32:55.347439" elapsed="0.000024"/>
</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-25T23:32:55.347629" elapsed="0.000022"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:32:55.346901" elapsed="0.000801"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:32:55.346797" 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-25T23:32:55.347866" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:32:55.347941" elapsed="0.000016"/>
</return>
<msg time="2026-04-25T23:32:55.348055" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:32:55.286377" elapsed="0.061703"/>
</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-25T23:32:55.349372" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:32:55.349123" elapsed="0.000321">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:32:55.349537" 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-25T23:32:55.348781" 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-25T23:32:55.349899" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:55.349632" elapsed="0.000327"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:32:55.350442" 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-25T23:32:55.350148" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-25T23:32:55.349983" elapsed="0.000520"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:55.349613" elapsed="0.000910"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:32:55.352793" 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-25T23:32:55.350659" elapsed="0.002162"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:32:55.352873" elapsed="0.000030"/>
</return>
<msg time="2026-04-25T23:32:55.353029" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:32:55.348430" elapsed="0.004624"/>
</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-25T23:32:55.354250" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:32:55.354008" elapsed="0.000313">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:32:55.354416" 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-25T23:32:55.353664" elapsed="0.000810"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:32:55.354706" elapsed="0.000029"/>
</return>
<status status="PASS" start="2026-04-25T23:32:55.354550" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-04-25T23:32:55.354531" elapsed="0.000263"/>
</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-25T23:32:55.354932" 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-25T23:32:55.355093" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:32:55.355160" elapsed="0.000016"/>
</return>
<msg time="2026-04-25T23:32:55.357184" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:32:55.353350" elapsed="0.003861"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:55.358593" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:55.358339" elapsed="0.000299"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:32:55.359041" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:32:55.358796" 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-25T23:32:55.369526" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:32:55.369668" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:32:55.369789" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:32:55.361162" elapsed="0.009002">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:32:55.359152" elapsed="0.011157">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:32:55.370785" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:55.370382" elapsed="0.000611"/>
</branch>
<status status="FAIL" start="2026-04-25T23:32:55.359134" elapsed="0.011926">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:32:55.372104" elapsed="0.000073"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:32:55.372453" elapsed="0.000035"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:32:55.372359" elapsed="0.000204"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:32:55.372316" 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-25T23:32:55.373013" elapsed="0.000055"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:32:55.373191" elapsed="0.000045"/>
</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-25T23:32:55.357520" elapsed="0.015952">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:32:55.373657" elapsed="0.000072"/>
</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-25T23:32:55.268578" elapsed="0.105359">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:32:55.374801" elapsed="0.000062"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:32:55.374180" elapsed="0.000807"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:32:55.374137" elapsed="0.000909"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:32:55.375253" elapsed="0.000043"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:32:55.260601" elapsed="0.114921">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:32:55.375993" elapsed="0.000060"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:32:55.253245" elapsed="0.123057">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:33:00.427474" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:33:00.427078" elapsed="0.000436"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:33:00.428383" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:33:00.428126" elapsed="0.000338">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:00.428560" 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-25T23:33:00.427695" elapsed="0.000889"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:33:00.429135" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:33:00.428753" elapsed="0.000409"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:33:00.429452" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:33:00.429616" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:33:00.429311" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:00.430064" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:00.429809" 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-25T23:33:00.431050" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:00.430796" elapsed="0.000299"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:33:00.431581" 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-25T23:33:00.431244" elapsed="0.000363"/>
</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-25T23:33:00.431945" 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-25T23:33:00.432138" 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-25T23:33:00.432361" elapsed="0.000023"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:33:00.431819" elapsed="0.000603"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:33:00.431660" elapsed="0.000793"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:33:00.432500" elapsed="0.000034"/>
</return>
<msg time="2026-04-25T23:33:00.432668" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:33:00.430473" elapsed="0.002234"/>
</kw>
<status status="PASS" start="2026-04-25T23:33:00.430186" elapsed="0.002588"/>
</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-25T23:33:00.432940" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:00.432801" elapsed="0.000224"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:00.430163" elapsed="0.002884"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:33:00.433620" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:33:00.433180" elapsed="0.000512"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:33:00.433744" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:33:00.426457" elapsed="0.007412"/>
</kw>
<msg time="2026-04-25T23:33:00.433993" 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-25T23:33:00.414361" elapsed="0.019682"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:00.446221" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:00.462526" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:00.474240" 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-25T23:33:00.474426" 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-25T23:33:00.474590" 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-25T23:33:00.474964" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:00.474830" elapsed="0.000189"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:00.474814" 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-25T23:33:00.475169" 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-25T23:33:00.475331" 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-25T23:33:00.475490" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:33:00.474785" elapsed="0.000758"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:33:00.474666" 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-25T23:33:00.475718" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:00.475796" elapsed="0.000016"/>
</return>
<msg time="2026-04-25T23:33:00.475908" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:33:00.410301" elapsed="0.065633"/>
</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-25T23:33:00.477157" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:33:00.476912" elapsed="0.000311">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:00.477327" 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-25T23:33:00.476563" 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-25T23:33:00.477660" elapsed="0.000073"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:00.477424" elapsed="0.000348"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:33:00.478254" 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-25T23:33:00.477960" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-25T23:33:00.477797" elapsed="0.000518"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:00.477406" elapsed="0.000931"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:33:00.480581" 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-25T23:33:00.478481" elapsed="0.002126"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:33:00.480659" elapsed="0.000041"/>
</return>
<msg time="2026-04-25T23:33:00.480828" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:33:00.476247" elapsed="0.004606"/>
</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-25T23:33:00.482068" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:33:00.481826" elapsed="0.000305">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:00.482224" 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-25T23:33:00.481487" elapsed="0.000761"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:33:00.482450" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-25T23:33:00.482316" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:00.482298" elapsed="0.000234"/>
</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-25T23:33:00.482665" elapsed="0.000038"/>
</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-25T23:33:00.482843" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:33:00.482907" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:33:00.484874" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:33:00.481147" elapsed="0.003753"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:00.486275" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:00.486030" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:00.486714" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:00.486461" 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-25T23:33:00.496439" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:33:00.496647" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:33:00.496806" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:33:00.488890" elapsed="0.008427">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:33:00.486823" elapsed="0.010606">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:00.497670" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:00.497472" elapsed="0.000311"/>
</branch>
<status status="FAIL" start="2026-04-25T23:33:00.486805" elapsed="0.011010">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:00.498308" elapsed="0.000035"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:00.498487" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:33:00.498437" elapsed="0.000106"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:00.498414" elapsed="0.000158"/>
</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-25T23:33:00.498831" elapsed="0.000030"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:33:00.498930" elapsed="0.000022"/>
</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-25T23:33:00.485203" elapsed="0.013874">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:00.499179" elapsed="0.000022"/>
</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-25T23:33:00.392469" elapsed="0.106843">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:00.499669" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:00.499439" elapsed="0.000349"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:00.499416" elapsed="0.000403"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:00.499864" elapsed="0.000020"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:33:00.386666" elapsed="0.113331">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:00.500213" elapsed="0.000029"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:33:00.377007" elapsed="0.123353">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:33:05.558795" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:33:05.558378" elapsed="0.000451"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:33:05.559572" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:33:05.559312" elapsed="0.000335">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:05.559760" 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-25T23:33:05.558988" elapsed="0.000799"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:33:05.560327" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:33:05.559941" elapsed="0.000414"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:33:05.560646" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:33:05.560863" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:33:05.560505" elapsed="0.000395"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:05.561295" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:05.561048" 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-25T23:33:05.562319" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:05.562067" elapsed="0.000297"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:33:05.562797" 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-25T23:33:05.562510" elapsed="0.000312"/>
</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-25T23:33:05.563147" 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-25T23:33:05.563342" 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-25T23:33:05.563580" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:33:05.563024" elapsed="0.000614"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:33:05.562878" elapsed="0.000793"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:33:05.563741" elapsed="0.000035"/>
</return>
<msg time="2026-04-25T23:33:05.563912" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:33:05.561757" elapsed="0.002182"/>
</kw>
<status status="PASS" start="2026-04-25T23:33:05.561428" elapsed="0.002545"/>
</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-25T23:33:05.564135" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:05.563999" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:05.561403" elapsed="0.002810"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:33:05.564877" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:33:05.564345" elapsed="0.000561"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:33:05.564956" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:33:05.557751" elapsed="0.007330"/>
</kw>
<msg time="2026-04-25T23:33:05.565135" 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-25T23:33:05.541728" elapsed="0.023455"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:05.577140" elapsed="0.000066"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:05.594253" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:05.605976" 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-25T23:33:05.606183" 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-25T23:33:05.606355" 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-25T23:33:05.606780" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:05.606626" elapsed="0.000211"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:05.606609" elapsed="0.000253"/>
</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-25T23:33:05.607006" 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-25T23:33:05.607160" 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-25T23:33:05.607310" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:33:05.606572" elapsed="0.000855"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:33:05.606456" elapsed="0.000999"/>
</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-25T23:33:05.607592" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:05.607671" elapsed="0.000031"/>
</return>
<msg time="2026-04-25T23:33:05.607823" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:33:05.537310" elapsed="0.070541"/>
</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-25T23:33:05.609191" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:33:05.608909" elapsed="0.000355">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:05.609357" 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-25T23:33:05.608508" elapsed="0.000874"/>
</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-25T23:33:05.609716" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:05.609451" elapsed="0.000322"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:33:05.610248" 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-25T23:33:05.609957" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-25T23:33:05.609797" elapsed="0.000513"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:05.609433" elapsed="0.000898"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:33:05.612558" 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-25T23:33:05.610466" elapsed="0.002119"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:33:05.612636" elapsed="0.000030"/>
</return>
<msg time="2026-04-25T23:33:05.612804" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:33:05.608171" elapsed="0.004658"/>
</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-25T23:33:05.613999" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:33:05.613768" elapsed="0.000293">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:05.614152" 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-25T23:33:05.613431" elapsed="0.000746"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:33:05.614379" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-25T23:33:05.614245" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:05.614227" elapsed="0.000235"/>
</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-25T23:33:05.614596" 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-25T23:33:05.614929" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:33:05.614994" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:33:05.616986" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:33:05.613120" elapsed="0.003894"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:05.618409" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:05.618152" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:05.618854" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:05.618594" 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-25T23:33:05.628670" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:33:05.628904" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:33:05.629060" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:33:05.621017" elapsed="0.008568">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:33:05.618963" elapsed="0.010771">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:05.630025" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:05.629785" elapsed="0.000337"/>
</branch>
<status status="FAIL" start="2026-04-25T23:33:05.618944" elapsed="0.011213">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:05.630747" elapsed="0.000038"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:05.630949" elapsed="0.000022"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:33:05.630889" elapsed="0.000144"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:05.630864" 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>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:05.631303" elapsed="0.000032"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:33:05.631406" elapsed="0.000022"/>
</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-25T23:33:05.617317" elapsed="0.014246">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:05.631673" elapsed="0.000045"/>
</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-25T23:33:05.518988" elapsed="0.112848">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:05.632215" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:05.631971" elapsed="0.000347"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:05.631947" elapsed="0.000405"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:05.632397" elapsed="0.000037"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:33:05.509894" elapsed="0.122664">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:05.632822" elapsed="0.000032"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:33:05.501091" elapsed="0.131890">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:33:10.688081" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:33:10.687656" elapsed="0.000461"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:33:10.688887" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:33:10.688609" elapsed="0.000356">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:10.689271" 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-25T23:33:10.688280" elapsed="0.001020"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:33:10.689891" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:33:10.689465" elapsed="0.000453"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:33:10.690209" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:33:10.690363" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:33:10.690067" elapsed="0.000320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:10.690790" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:10.690529" 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-25T23:33:10.691817" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:10.691543" elapsed="0.000320"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:33:10.692281" 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-25T23:33:10.692012" 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-25T23:33:10.692623" 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-25T23:33:10.692829" 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-25T23:33:10.693009" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:33:10.692502" elapsed="0.000564"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:33:10.692360" elapsed="0.000736"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:33:10.693142" elapsed="0.000034"/>
</return>
<msg time="2026-04-25T23:33:10.693308" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:33:10.691227" elapsed="0.002105"/>
</kw>
<status status="PASS" start="2026-04-25T23:33:10.690914" 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-25T23:33:10.693522" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:10.693388" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:10.690891" elapsed="0.002705"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:33:10.694198" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:33:10.693740" elapsed="0.000485"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:33:10.694274" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:33:10.687033" elapsed="0.007383"/>
</kw>
<msg time="2026-04-25T23:33:10.694489" 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-25T23:33:10.674743" elapsed="0.019802"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:10.706506" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:10.719972" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:10.731845" 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-25T23:33:10.732061" 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-25T23:33:10.732231" 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-25T23:33:10.732631" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:10.732491" elapsed="0.000213"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:10.732473" elapsed="0.000259"/>
</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-25T23:33:10.732865" elapsed="0.000049"/>
</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-25T23:33:10.733061" 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-25T23:33:10.733217" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:33:10.732436" elapsed="0.000834"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:33:10.732317" elapsed="0.000980"/>
</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-25T23:33:10.733431" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:10.733509" elapsed="0.000016"/>
</return>
<msg time="2026-04-25T23:33:10.733648" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:33:10.670570" elapsed="0.063105"/>
</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-25T23:33:10.735055" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:33:10.734751" elapsed="0.000380">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:10.735225" 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-25T23:33:10.734361" elapsed="0.000887"/>
</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-25T23:33:10.735568" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:10.735318" elapsed="0.000306"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:33:10.736129" 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-25T23:33:10.735831" elapsed="0.000324"/>
</kw>
<status status="PASS" start="2026-04-25T23:33:10.735648" elapsed="0.000543"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:10.735300" elapsed="0.000913"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:33:10.738494" 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-25T23:33:10.736350" elapsed="0.002170"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:33:10.738572" elapsed="0.000031"/>
</return>
<msg time="2026-04-25T23:33:10.738745" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:33:10.734023" elapsed="0.004747"/>
</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-25T23:33:10.739966" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:33:10.739719" elapsed="0.000313">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:10.740197" 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-25T23:33:10.739383" elapsed="0.000839"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:33:10.740449" elapsed="0.000028"/>
</return>
<status status="PASS" start="2026-04-25T23:33:10.740307" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:10.740285" elapsed="0.000250"/>
</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-25T23:33:10.740672" elapsed="0.000040"/>
</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-25T23:33:10.740869" elapsed="0.000023"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:33:10.740940" elapsed="0.000016"/>
</return>
<msg time="2026-04-25T23:33:10.742934" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:33:10.739069" elapsed="0.003892"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:10.744376" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:10.744115" elapsed="0.000308"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:10.744861" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:10.744581" elapsed="0.000327"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-25T23:33:10.756433" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:33:10.756772" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:33:10.757053" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:33:10.746999" elapsed="0.010957">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:33:10.744975" elapsed="0.013177">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:10.758663" elapsed="0.000094"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:10.758227" elapsed="0.000634"/>
</branch>
<status status="FAIL" start="2026-04-25T23:33:10.744957" elapsed="0.013958">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:10.759779" elapsed="0.000062"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:10.760084" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:33:10.759998" elapsed="0.000178"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:10.759958" 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-25T23:33:10.760516" elapsed="0.000046"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:33:10.760670" elapsed="0.000060"/>
</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-25T23:33:10.743274" elapsed="0.017682">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:10.761126" elapsed="0.000034"/>
</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-25T23:33:10.650732" elapsed="0.110604">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:10.761944" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:10.761536" elapsed="0.000570"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:10.761499" elapsed="0.000754"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:10.762333" elapsed="0.000033"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:33:10.642767" elapsed="0.119785">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:10.763056" elapsed="0.000057"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:33:10.633675" elapsed="0.129644">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:33:15.813411" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:33:15.813018" elapsed="0.000426"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:33:15.814211" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:33:15.813947" elapsed="0.000343">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:15.814403" 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-25T23:33:15.813606" elapsed="0.000831"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:33:15.815089" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:33:15.814642" elapsed="0.000475"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:33:15.815410" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:33:15.815571" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:33:15.815268" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:15.816020" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:15.815757" 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-25T23:33:15.817012" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:15.816756" elapsed="0.000308"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:33:15.817486" 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-25T23:33:15.817213" elapsed="0.000298"/>
</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-25T23:33:15.817881" 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-25T23:33:15.818078" 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-25T23:33:15.818239" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:33:15.817745" elapsed="0.000551"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:33:15.817567" elapsed="0.000759"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:33:15.818371" elapsed="0.000033"/>
</return>
<msg time="2026-04-25T23:33:15.818537" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:33:15.816435" elapsed="0.002127"/>
</kw>
<status status="PASS" start="2026-04-25T23:33:15.816143" 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-25T23:33:15.818765" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:15.818618" elapsed="0.000203"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:15.816119" elapsed="0.002722"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:33:15.819416" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:33:15.818978" elapsed="0.000465"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:33:15.819491" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:33:15.812401" elapsed="0.007211"/>
</kw>
<msg time="2026-04-25T23:33:15.819741" 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-25T23:33:15.800429" elapsed="0.019363"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:15.831719" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:15.843443" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:15.855252" 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-25T23:33:15.855437" 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-25T23:33:15.855599" elapsed="0.000019"/>
</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-25T23:33:15.856005" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:15.855870" elapsed="0.000190"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:15.855852" 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-25T23:33:15.856209" 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-25T23:33:15.856361" 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-25T23:33:15.856512" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:33:15.855791" elapsed="0.000772"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:33:15.855673" 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-25T23:33:15.856736" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:15.856812" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:33:15.856920" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:33:15.796382" elapsed="0.060564"/>
</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-25T23:33:15.858174" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:33:15.857914" elapsed="0.000327">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:15.858333" 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-25T23:33:15.857571" 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-25T23:33:15.858658" elapsed="0.000080"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:15.858426" elapsed="0.000357"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:33:15.859282" 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-25T23:33:15.858989" elapsed="0.000319"/>
</kw>
<status status="PASS" start="2026-04-25T23:33:15.858809" elapsed="0.000534"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:15.858408" elapsed="0.000957"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:33:15.861622" 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-25T23:33:15.859503" elapsed="0.002146"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:33:15.861715" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:33:15.861869" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:33:15.857255" elapsed="0.004639"/>
</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-25T23:33:15.863079" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:33:15.862828" elapsed="0.000318">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:15.863241" 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-25T23:33:15.862494" elapsed="0.000772"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:33:15.863473" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-25T23:33:15.863336" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:15.863317" elapsed="0.000240"/>
</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-25T23:33:15.863708" 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-25T23:33:15.863891" elapsed="0.000022"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:33:15.863959" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:33:15.865945" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:33:15.862187" elapsed="0.003785"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:15.867350" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:15.867098" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:15.867929" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:15.867561" elapsed="0.000415"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-25T23:33:15.879178" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:33:15.879324" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:33:15.879421" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:33:15.870078" elapsed="0.009780">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:33:15.868044" elapsed="0.011898">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:15.880117" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:15.879974" elapsed="0.000207"/>
</branch>
<status status="FAIL" start="2026-04-25T23:33:15.868025" elapsed="0.012179">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:15.880573" elapsed="0.000024"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:15.880718" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:33:15.880665" elapsed="0.000094"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:15.880649" elapsed="0.000131"/>
</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-25T23:33:15.880948" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:33:15.881018" elapsed="0.000015"/>
</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-25T23:33:15.866266" elapsed="0.014857">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:15.881197" elapsed="0.000015"/>
</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-25T23:33:15.778706" elapsed="0.102586">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:15.881549" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:15.881383" elapsed="0.000236"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:15.881367" elapsed="0.000274"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:15.881673" elapsed="0.000029"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:33:15.772977" elapsed="0.108808">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:15.881940" elapsed="0.000022"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:33:15.764060" elapsed="0.117986">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:33:20.936095" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:33:20.935654" elapsed="0.000477"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:33:20.936942" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:33:20.936653" elapsed="0.000374">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:20.937123" 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-25T23:33:20.936300" elapsed="0.000848"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:33:20.937710" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:33:20.937309" elapsed="0.000430"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:33:20.938050" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:33:20.938225" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:33:20.937890" elapsed="0.000363"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:20.938740" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:20.938420" elapsed="0.000377"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:20.939835" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:20.939553" elapsed="0.000328"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:33:20.940311" 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-25T23:33:20.940040" elapsed="0.000298"/>
</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-25T23:33:20.940712" 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-25T23:33:20.940926" 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-25T23:33:20.941170" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:33:20.940572" elapsed="0.000657"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:33:20.940424" elapsed="0.000837"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:33:20.941312" elapsed="0.000035"/>
</return>
<msg time="2026-04-25T23:33:20.941484" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:33:20.939178" elapsed="0.002331"/>
</kw>
<status status="PASS" start="2026-04-25T23:33:20.938876" elapsed="0.002666"/>
</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-25T23:33:20.941719" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:20.941568" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:20.938851" elapsed="0.002948"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:33:20.942394" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:33:20.941939" elapsed="0.000482"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:33:20.942471" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:33:20.935044" elapsed="0.007552"/>
</kw>
<msg time="2026-04-25T23:33:20.942650" 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-25T23:33:20.922786" elapsed="0.019935"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:20.954782" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:20.966515" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:20.978512" 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-25T23:33:20.978730" 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-25T23:33:20.978902" 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-25T23:33:20.979292" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:20.979154" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:20.979137" 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-25T23:33:20.979502" 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-25T23:33:20.979657" 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-25T23:33:20.979829" elapsed="0.000021"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:33:20.979109" elapsed="0.000830"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:33:20.979004" 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-25T23:33:20.980115" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:20.980194" elapsed="0.000016"/>
</return>
<msg time="2026-04-25T23:33:20.980306" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:33:20.918662" elapsed="0.061670"/>
</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-25T23:33:20.981587" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:33:20.981345" elapsed="0.000306">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:20.981762" 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-25T23:33:20.981006" 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-25T23:33:20.982091" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:20.981858" elapsed="0.000291"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:33:20.982636" 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-25T23:33:20.982340" elapsed="0.000321"/>
</kw>
<status status="PASS" start="2026-04-25T23:33:20.982173" elapsed="0.000540"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:20.981840" elapsed="0.000896"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:33:20.985014" 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-25T23:33:20.982874" elapsed="0.002168"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:33:20.985094" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:33:20.985248" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:33:20.980663" elapsed="0.004610"/>
</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-25T23:33:20.986454" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:33:20.986214" elapsed="0.000303">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:20.986610" 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-25T23:33:20.985892" elapsed="0.000743"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:33:20.986859" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-25T23:33:20.986721" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:20.986702" elapsed="0.000240"/>
</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-25T23:33:20.987077" 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-25T23:33:20.987239" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:33:20.987304" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:33:20.989392" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:33:20.985567" elapsed="0.003853"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:20.990815" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:20.990550" elapsed="0.000311"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:20.991252" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:20.991009" 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-25T23:33:21.001294" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:33:21.001480" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:33:21.001614" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:33:20.993441" elapsed="0.008711">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:33:20.991363" elapsed="0.010913">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:21.002581" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:21.002333" elapsed="0.000388"/>
</branch>
<status status="FAIL" start="2026-04-25T23:33:20.991344" elapsed="0.011421">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:21.003310" elapsed="0.000036"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:21.003500" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:33:21.003445" elapsed="0.000112"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:21.003421" 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-25T23:33:21.003792" elapsed="0.000032"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:33:21.003892" 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-25T23:33:20.989737" elapsed="0.014315">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:21.004162" elapsed="0.000022"/>
</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-25T23:33:20.900727" elapsed="0.103568">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:21.004711" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:21.004456" elapsed="0.000358"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:21.004433" elapsed="0.000414"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:21.004893" elapsed="0.000023"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:33:20.891919" elapsed="0.113123">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:21.005276" elapsed="0.000031"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:33:20.882730" elapsed="0.122697">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:33:26.057267" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:33:26.056867" elapsed="0.000437"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:33:26.058166" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:33:26.057805" elapsed="0.000446">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:26.058437" 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-25T23:33:26.057470" elapsed="0.000993"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:33:26.059026" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:33:26.058616" elapsed="0.000436"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:33:26.059347" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:33:26.059510" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:33:26.059201" elapsed="0.000334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:26.059945" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:26.059680" 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-25T23:33:26.060931" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:26.060663" elapsed="0.000313"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:33:26.061387" 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-25T23:33:26.061124" elapsed="0.000289"/>
</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-25T23:33:26.061743" 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-25T23:33:26.061936" elapsed="0.000040"/>
</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-25T23:33:26.062116" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:33:26.061606" elapsed="0.000566"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:33:26.061467" elapsed="0.000735"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:33:26.062252" elapsed="0.000034"/>
</return>
<msg time="2026-04-25T23:33:26.062416" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:33:26.060357" elapsed="0.002084"/>
</kw>
<status status="PASS" start="2026-04-25T23:33:26.060072" elapsed="0.002401"/>
</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-25T23:33:26.062629" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:26.062497" elapsed="0.000199"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:26.060045" elapsed="0.002673"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:33:26.063288" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:33:26.062848" elapsed="0.000467"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:33:26.063368" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:33:26.056254" elapsed="0.007235"/>
</kw>
<msg time="2026-04-25T23:33:26.063540" 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-25T23:33:26.044323" elapsed="0.019265"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:26.075892" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:26.087506" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:26.099144" 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-25T23:33:26.099332" 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-25T23:33:26.099496" 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-25T23:33:26.099873" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:26.099738" elapsed="0.000189"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:26.099721" 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-25T23:33:26.100077" 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-25T23:33:26.100229" 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-25T23:33:26.100379" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:33:26.099676" elapsed="0.000754"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:33:26.099572" elapsed="0.000884"/>
</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-25T23:33:26.100589" elapsed="0.000026"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:26.100670" elapsed="0.000030"/>
</return>
<msg time="2026-04-25T23:33:26.100804" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:33:26.040204" elapsed="0.060626"/>
</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-25T23:33:26.102096" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:33:26.101828" elapsed="0.000338">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:26.102258" 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-25T23:33:26.101458" elapsed="0.000824"/>
</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-25T23:33:26.102589" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:26.102350" elapsed="0.000295"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:33:26.103144" 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-25T23:33:26.102852" elapsed="0.000318"/>
</kw>
<status status="PASS" start="2026-04-25T23:33:26.102667" elapsed="0.000539"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:26.102333" elapsed="0.000894"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:33:26.105534" 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-25T23:33:26.103363" elapsed="0.002197"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:33:26.105612" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:33:26.105782" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:33:26.101142" elapsed="0.004665"/>
</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-25T23:33:26.107062" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:33:26.106823" elapsed="0.000302">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:26.107258" 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-25T23:33:26.106481" elapsed="0.000802"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:33:26.107488" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-25T23:33:26.107352" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:26.107334" elapsed="0.000236"/>
</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-25T23:33:26.107720" 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-25T23:33:26.107877" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:33:26.107942" elapsed="0.000014"/>
</return>
<msg time="2026-04-25T23:33:26.109895" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:33:26.106166" elapsed="0.003785"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:26.111300" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:26.111053" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:26.111734" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:26.111482" 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-25T23:33:26.258537" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:33:26.258885" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:33:26.259132" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:33:26.113827" elapsed="0.146255">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:33:26.111844" elapsed="0.148436">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:26.260802" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:26.260357" elapsed="0.000597"/>
</branch>
<status status="FAIL" start="2026-04-25T23:33:26.111825" elapsed="0.149180">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:26.261899" elapsed="0.000059"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:26.262202" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:33:26.262116" elapsed="0.000177"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:26.262075" 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-25T23:33:26.262629" elapsed="0.000046"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:33:26.262811" elapsed="0.000034"/>
</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-25T23:33:26.110251" elapsed="0.152794">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:26.263211" elapsed="0.000034"/>
</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-25T23:33:26.021918" elapsed="0.241500">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:26.264014" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:26.263619" elapsed="0.000555"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:26.263582" elapsed="0.000735"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:26.264396" elapsed="0.000033"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:33:26.013391" elapsed="0.251220">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:26.264994" elapsed="0.000048"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:33:26.006101" elapsed="0.259130">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:33:31.318627" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:33:31.318223" elapsed="0.000438"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:33:31.319421" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:33:31.319158" elapsed="0.000375">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:31.319631" 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-25T23:33:31.318838" elapsed="0.000817"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:33:31.320205" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:33:31.319824" elapsed="0.000407"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:33:31.320520" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:33:31.320718" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:33:31.320379" elapsed="0.000365"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:31.321130" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:31.320886" 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-25T23:33:31.322113" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:31.321861" elapsed="0.000313"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:33:31.322594" 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-25T23:33:31.322329" 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-25T23:33:31.322965" 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-25T23:33:31.323154" 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-25T23:33:31.323314" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:33:31.322842" elapsed="0.000527"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:33:31.322675" elapsed="0.000725"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:33:31.323447" elapsed="0.000049"/>
</return>
<msg time="2026-04-25T23:33:31.323636" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:33:31.321542" elapsed="0.002119"/>
</kw>
<status status="PASS" start="2026-04-25T23:33:31.321251" elapsed="0.002460"/>
</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-25T23:33:31.323872" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:31.323737" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:31.321226" elapsed="0.002723"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:33:31.324517" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:33:31.324079" elapsed="0.000464"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:33:31.324591" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:33:31.317610" elapsed="0.007119"/>
</kw>
<msg time="2026-04-25T23:33:31.324901" 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-25T23:33:31.305636" elapsed="0.019316"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:31.336763" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:31.348319" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:31.359908" 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-25T23:33:31.360088" 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-25T23:33:31.360250" 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-25T23:33:31.360609" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:31.360467" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:31.360452" 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-25T23:33:31.360832" 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-25T23:33:31.360988" 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-25T23:33:31.361143" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:33:31.360425" elapsed="0.000771"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:33:31.360325" elapsed="0.000896"/>
</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-25T23:33:31.361353" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:31.361428" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:33:31.361537" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:33:31.301550" elapsed="0.060011"/>
</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-25T23:33:31.362773" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:33:31.362520" elapsed="0.000319">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:31.362930" 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-25T23:33:31.362193" elapsed="0.000760"/>
</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-25T23:33:31.363254" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:31.363021" elapsed="0.000326"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:33:31.363879" 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-25T23:33:31.363565" elapsed="0.000339"/>
</kw>
<status status="PASS" start="2026-04-25T23:33:31.363371" elapsed="0.000569"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:31.363003" elapsed="0.000958"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:33:31.366180" 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-25T23:33:31.364099" elapsed="0.002107"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:33:31.366257" elapsed="0.000028"/>
</return>
<msg time="2026-04-25T23:33:31.366407" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:33:31.361884" elapsed="0.004547"/>
</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-25T23:33:31.367635" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:33:31.367370" elapsed="0.000344">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:31.367808" 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-25T23:33:31.367051" elapsed="0.000781"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:33:31.368034" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-25T23:33:31.367901" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:31.367883" elapsed="0.000233"/>
</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-25T23:33:31.368249" 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-25T23:33:31.368408" elapsed="0.000019"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:33:31.368471" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:33:31.370431" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:33:31.366733" elapsed="0.003725"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:31.371848" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:31.371579" elapsed="0.000315"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:31.372279" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:31.372040" 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-25T23:33:31.382212" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:33:31.382354" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:33:31.382457" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:33:31.374346" elapsed="0.008495">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:33:31.372386" elapsed="0.010535">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:31.383094" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:31.382953" elapsed="0.000205"/>
</branch>
<status status="FAIL" start="2026-04-25T23:33:31.372368" elapsed="0.010813">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:31.383588" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:31.383738" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:33:31.383699" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:31.383667" elapsed="0.000132"/>
</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-25T23:33:31.383965" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:33:31.384035" elapsed="0.000015"/>
</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-25T23:33:31.370780" elapsed="0.013360">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:31.384214" elapsed="0.000016"/>
</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-25T23:33:31.282080" elapsed="0.102228">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:31.384562" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:31.384399" elapsed="0.000253"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:31.384382" elapsed="0.000356"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:31.384812" elapsed="0.000032"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:33:31.274000" elapsed="0.111023">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:31.385370" elapsed="0.000047"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:33:31.265993" elapsed="0.119613">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:33:36.437168" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:33:36.436749" elapsed="0.000454"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:33:36.437991" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:33:36.437718" elapsed="0.000353">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:36.438164" 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-25T23:33:36.437367" elapsed="0.000821"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:33:36.438743" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:33:36.438342" elapsed="0.000428"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:33:36.439064" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:33:36.439247" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:33:36.438920" elapsed="0.000352"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:36.439658" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:36.439417" 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-25T23:33:36.440660" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:36.440408" elapsed="0.000313"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:33:36.441148" 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-25T23:33:36.440869" elapsed="0.000315"/>
</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-25T23:33:36.441530" 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-25T23:33:36.441742" 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-25T23:33:36.442065" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:33:36.441404" elapsed="0.000720"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:33:36.441252" elapsed="0.000902"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:33:36.442201" elapsed="0.000034"/>
</return>
<msg time="2026-04-25T23:33:36.442371" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:33:36.440101" elapsed="0.002298"/>
</kw>
<status status="PASS" start="2026-04-25T23:33:36.439802" elapsed="0.002630"/>
</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-25T23:33:36.442593" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:36.442458" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:36.439776" elapsed="0.002892"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:33:36.443269" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:33:36.442824" elapsed="0.000471"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:33:36.443343" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:33:36.436122" elapsed="0.007342"/>
</kw>
<msg time="2026-04-25T23:33:36.443517" 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-25T23:33:36.424002" elapsed="0.019564"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:36.455616" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:36.467445" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:36.479213" 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-25T23:33:36.479430" 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-25T23:33:36.479606" 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-25T23:33:36.480037" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:36.479892" elapsed="0.000201"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:36.479875" 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-25T23:33:36.480255" 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-25T23:33:36.480410" 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-25T23:33:36.480563" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:33:36.479836" elapsed="0.000869"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:33:36.479709" elapsed="0.001031"/>
</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-25T23:33:36.480881" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:36.480960" elapsed="0.000017"/>
</return>
<msg time="2026-04-25T23:33:36.481131" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:33:36.419914" elapsed="0.061246"/>
</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-25T23:33:36.482610" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:33:36.482317" elapsed="0.000386">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:36.482842" 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-25T23:33:36.481853" elapsed="0.001015"/>
</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-25T23:33:36.483256" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:36.482947" elapsed="0.000366"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:33:36.483861" 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-25T23:33:36.483550" elapsed="0.000337"/>
</kw>
<status status="PASS" start="2026-04-25T23:33:36.483337" elapsed="0.000585"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:36.482928" elapsed="0.001015"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:33:36.486284" 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-25T23:33:36.484081" elapsed="0.002231"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:33:36.486366" elapsed="0.000033"/>
</return>
<msg time="2026-04-25T23:33:36.486526" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:33:36.481484" elapsed="0.005067"/>
</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-25T23:33:36.487785" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:33:36.487522" elapsed="0.000328">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:36.487945" 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-25T23:33:36.487196" elapsed="0.000774"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:33:36.488177" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-25T23:33:36.488040" elapsed="0.000197"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:36.488021" elapsed="0.000239"/>
</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-25T23:33:36.488397" 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-25T23:33:36.488558" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:33:36.488623" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:33:36.490641" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:33:36.486878" elapsed="0.003790"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:36.492079" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:36.491820" elapsed="0.000306"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:36.492514" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:36.492269" 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-25T23:33:36.502506" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:33:36.502794" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:33:36.502933" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:33:36.494726" elapsed="0.008712">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:33:36.492623" elapsed="0.010931">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:36.503826" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:36.503600" elapsed="0.000325"/>
</branch>
<status status="FAIL" start="2026-04-25T23:33:36.492604" elapsed="0.011354">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:36.504470" elapsed="0.000037"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:36.504658" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:33:36.504607" elapsed="0.000130"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:36.504583" 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-25T23:33:36.504953" elapsed="0.000031"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:33:36.505076" elapsed="0.000022"/>
</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-25T23:33:36.491000" elapsed="0.014227">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:36.505332" elapsed="0.000021"/>
</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-25T23:33:36.402303" elapsed="0.103162">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:36.505852" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:36.505598" elapsed="0.000364"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:36.505575" elapsed="0.000420"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:36.506041" elapsed="0.000020"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:33:36.395178" elapsed="0.110999">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:36.506399" elapsed="0.000031"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:33:36.386346" elapsed="0.120209">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:33:41.557235" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:33:41.556823" elapsed="0.000453"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:33:41.558072" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:33:41.557809" elapsed="0.000338">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:41.558351" 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-25T23:33:41.557463" elapsed="0.000914"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:33:41.558984" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:33:41.558532" elapsed="0.000480"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:33:41.559305" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:33:41.559458" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:33:41.559163" elapsed="0.000320"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:41.559892" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:41.559628" 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-25T23:33:41.560895" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:41.560621" elapsed="0.000318"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:33:41.561352" 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-25T23:33:41.561087" 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-25T23:33:41.561708" 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-25T23:33:41.561903" 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-25T23:33:41.562067" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:33:41.561571" elapsed="0.000553"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:33:41.561431" elapsed="0.000723"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:33:41.562199" elapsed="0.000033"/>
</return>
<msg time="2026-04-25T23:33:41.562363" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:33:41.560306" elapsed="0.002083"/>
</kw>
<status status="PASS" start="2026-04-25T23:33:41.560013" elapsed="0.002408"/>
</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-25T23:33:41.562580" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:41.562446" elapsed="0.000208"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:41.559991" elapsed="0.002684"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:33:41.563260" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:33:41.562822" elapsed="0.000466"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:33:41.563337" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:33:41.556182" elapsed="0.007278"/>
</kw>
<msg time="2026-04-25T23:33:41.563513" 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-25T23:33:41.544051" elapsed="0.019510"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:41.575378" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:41.587129" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:41.598977" 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-25T23:33:41.599161" 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-25T23:33:41.599325" 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-25T23:33:41.599677" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:41.599544" elapsed="0.000203"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:41.599529" 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-25T23:33:41.599904" 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-25T23:33:41.600060" 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-25T23:33:41.600213" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:33:41.599501" elapsed="0.000764"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:33:41.599400" 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-25T23:33:41.600423" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:41.600497" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:33:41.600607" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:33:41.539992" elapsed="0.060640"/>
</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-25T23:33:41.601853" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:33:41.601598" elapsed="0.000321">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:41.602010" 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-25T23:33:41.601273" 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-25T23:33:41.602334" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:41.602102" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:33:41.602914" 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-25T23:33:41.602575" elapsed="0.000364"/>
</kw>
<status status="PASS" start="2026-04-25T23:33:41.602413" elapsed="0.000562"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:41.602084" elapsed="0.000912"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:33:41.605218" 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-25T23:33:41.603131" elapsed="0.002113"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:33:41.605295" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:33:41.605445" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:33:41.600961" elapsed="0.004508"/>
</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-25T23:33:41.606665" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:33:41.606407" elapsed="0.000338">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:41.606917" 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-25T23:33:41.606089" elapsed="0.000853"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:33:41.607149" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-25T23:33:41.607013" elapsed="0.000196"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:41.606995" elapsed="0.000237"/>
</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-25T23:33:41.607365" 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-25T23:33:41.607520" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:33:41.607585" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:33:41.609519" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:33:41.605773" elapsed="0.003772"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:41.610931" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:41.610671" elapsed="0.000305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:41.611355" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:41.611117" elapsed="0.000280"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-25T23:33:41.621659" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:33:41.621812" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:33:41.621926" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:33:41.613535" elapsed="0.008875">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:33:41.611462" elapsed="0.011060">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:41.622802" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:41.622566" elapsed="0.000327"/>
</branch>
<status status="FAIL" start="2026-04-25T23:33:41.611444" elapsed="0.011486">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:41.623419" elapsed="0.000035"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:41.623613" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:33:41.623561" elapsed="0.000109"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:41.623536" 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-25T23:33:41.623903" elapsed="0.000029"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:33:41.623999" elapsed="0.000021"/>
</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-25T23:33:41.609863" elapsed="0.014281">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:41.624246" elapsed="0.000021"/>
</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-25T23:33:41.522143" elapsed="0.102251">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:41.624773" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:41.624523" elapsed="0.000351"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:41.624500" elapsed="0.000451"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:41.625001" elapsed="0.000021"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:33:41.514185" elapsed="0.110954">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:41.625366" elapsed="0.000031"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:33:41.507240" elapsed="0.118276">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:33:46.676155" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:33:46.675764" elapsed="0.000424"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:33:46.676953" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:33:46.676698" elapsed="0.000331">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:46.677125" 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-25T23:33:46.676366" elapsed="0.000784"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:33:46.677679" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:33:46.677301" elapsed="0.000420"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:33:46.678010" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:33:46.678171" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:33:46.677870" elapsed="0.000326"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:46.678588" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:46.678343" 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-25T23:33:46.679561" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:46.679310" elapsed="0.000296"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:33:46.680032" 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-25T23:33:46.679768" 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-25T23:33:46.680403" 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-25T23:33:46.680596" 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-25T23:33:46.680773" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:33:46.680280" elapsed="0.000551"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:33:46.680116" elapsed="0.000745"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:33:46.680907" elapsed="0.000033"/>
</return>
<msg time="2026-04-25T23:33:46.681069" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:33:46.679008" elapsed="0.002087"/>
</kw>
<status status="PASS" start="2026-04-25T23:33:46.678724" elapsed="0.002403"/>
</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-25T23:33:46.681292" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:46.681158" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:46.678700" elapsed="0.002667"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:33:46.681952" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:33:46.681501" elapsed="0.000478"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:33:46.682027" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:33:46.675148" elapsed="0.007000"/>
</kw>
<msg time="2026-04-25T23:33:46.682257" 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-25T23:33:46.663162" elapsed="0.019144"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:46.694078" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:46.706376" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:46.717957" 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-25T23:33:46.718141" 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-25T23:33:46.718301" 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-25T23:33:46.718649" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:46.718517" elapsed="0.000200"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:46.718503" 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-25T23:33:46.718867" 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-25T23:33:46.719020" 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-25T23:33:46.719171" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:33:46.718475" elapsed="0.000748"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:33:46.718375" elapsed="0.000873"/>
</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-25T23:33:46.719379" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:46.719453" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:33:46.719576" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:33:46.659130" elapsed="0.060472"/>
</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-25T23:33:46.720826" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:33:46.720577" elapsed="0.000312">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:46.720978" 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-25T23:33:46.720251" elapsed="0.000757"/>
</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-25T23:33:46.721305" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:46.721077" elapsed="0.000317"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:33:46.721887" 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-25T23:33:46.721581" elapsed="0.000332"/>
</kw>
<status status="PASS" start="2026-04-25T23:33:46.721418" elapsed="0.000529"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:46.721059" elapsed="0.000909"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:33:46.724200" 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-25T23:33:46.722106" elapsed="0.002121"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:33:46.724286" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:33:46.724437" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:33:46.719924" elapsed="0.004538"/>
</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-25T23:33:46.725621" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:33:46.725385" elapsed="0.000313">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:46.725793" 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-25T23:33:46.725069" elapsed="0.000748"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:33:46.726018" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-25T23:33:46.725885" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:46.725867" elapsed="0.000233"/>
</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-25T23:33:46.726232" elapsed="0.000020"/>
</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-25T23:33:46.726386" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:33:46.726448" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:33:46.728430" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:33:46.724763" elapsed="0.003693"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:46.729798" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:46.729541" elapsed="0.000301"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:46.730217" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:46.729981" elapsed="0.000279"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-25T23:33:46.740732" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:33:46.740871" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:33:46.740964" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:33:46.732393" elapsed="0.008931">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:33:46.730324" elapsed="0.011079">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:46.741575" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:46.741435" elapsed="0.000203"/>
</branch>
<status status="FAIL" start="2026-04-25T23:33:46.730306" elapsed="0.011355">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:46.742028" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:46.742163" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:33:46.742127" elapsed="0.000077"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:46.742107" 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-25T23:33:46.742386" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:33:46.742456" elapsed="0.000015"/>
</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-25T23:33:46.728764" elapsed="0.013796">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:46.742633" elapsed="0.000015"/>
</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-25T23:33:46.641808" elapsed="0.100933">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:46.742997" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:46.742833" elapsed="0.000234"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:46.742817" elapsed="0.000273"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:46.743125" elapsed="0.000016"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:33:46.634950" elapsed="0.108270">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:46.743375" elapsed="0.000020"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:33:46.626196" elapsed="0.117284">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:33:51.796908" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:33:51.796495" elapsed="0.000448"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:33:51.797702" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:33:51.797432" elapsed="0.000376">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:51.797911" 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-25T23:33:51.797104" elapsed="0.000832"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:33:51.798476" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:33:51.798089" elapsed="0.000413"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:33:51.798812" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:33:51.798979" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:33:51.798652" elapsed="0.000352"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:51.799396" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:51.799147" 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-25T23:33:51.800394" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:51.800137" elapsed="0.000310"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:33:51.800886" 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-25T23:33:51.800596" elapsed="0.000316"/>
</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-25T23:33:51.801237" 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-25T23:33:51.801431" 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-25T23:33:51.801652" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:33:51.801114" elapsed="0.000614"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:33:51.800968" elapsed="0.000793"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:33:51.801832" elapsed="0.000038"/>
</return>
<msg time="2026-04-25T23:33:51.802009" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:33:51.799826" elapsed="0.002208"/>
</kw>
<status status="PASS" start="2026-04-25T23:33:51.799519" elapsed="0.002549"/>
</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-25T23:33:51.802230" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:51.802094" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:51.799496" elapsed="0.002811"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:33:51.802896" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:33:51.802437" elapsed="0.000486"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:33:51.802972" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:33:51.795889" elapsed="0.007207"/>
</kw>
<msg time="2026-04-25T23:33:51.803150" 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-25T23:33:51.783721" elapsed="0.019476"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:51.815144" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:51.826972" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:51.838720" 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-25T23:33:51.838904" 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-25T23:33:51.839065" elapsed="0.000019"/>
</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-25T23:33:51.839418" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:51.839282" elapsed="0.000191"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:51.839267" 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-25T23:33:51.839622" 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-25T23:33:51.839790" 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-25T23:33:51.839943" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:33:51.839238" elapsed="0.000790"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:33:51.839137" 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-25T23:33:51.840186" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:51.840259" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:33:51.840368" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:33:51.779590" elapsed="0.060803"/>
</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-25T23:33:51.841721" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:33:51.841466" elapsed="0.000334">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:51.841893" 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-25T23:33:51.841138" elapsed="0.000779"/>
</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-25T23:33:51.842226" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:51.841986" elapsed="0.000297"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:33:51.842769" 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-25T23:33:51.842466" elapsed="0.000328"/>
</kw>
<status status="PASS" start="2026-04-25T23:33:51.842306" elapsed="0.000523"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:51.841968" elapsed="0.000882"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:33:51.845052" 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-25T23:33:51.842985" elapsed="0.002093"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:33:51.845129" elapsed="0.000028"/>
</return>
<msg time="2026-04-25T23:33:51.845279" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:33:51.840828" elapsed="0.004475"/>
</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-25T23:33:51.846484" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:33:51.846242" elapsed="0.000304">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:51.846637" 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-25T23:33:51.845924" elapsed="0.000737"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:33:51.846881" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-25T23:33:51.846747" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:51.846728" elapsed="0.000235"/>
</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-25T23:33:51.847096" 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-25T23:33:51.847251" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:33:51.847319" elapsed="0.000014"/>
</return>
<msg time="2026-04-25T23:33:51.849262" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:33:51.845590" elapsed="0.003700"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:51.850742" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:51.850456" elapsed="0.000338"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:51.851187" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:51.850938" 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-25T23:33:51.860874" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:33:51.861103" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:33:51.861290" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:33:51.853289" elapsed="0.008539">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:33:51.851297" elapsed="0.010644">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:51.862180" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:51.861984" elapsed="0.000285"/>
</branch>
<status status="FAIL" start="2026-04-25T23:33:51.851278" elapsed="0.011023">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:51.862810" elapsed="0.000035"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:51.862990" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:33:51.862939" elapsed="0.000107"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:51.862917" elapsed="0.000158"/>
</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-25T23:33:51.863255" elapsed="0.000028"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:33:51.863349" elapsed="0.000020"/>
</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-25T23:33:51.849589" elapsed="0.013905">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:51.863595" elapsed="0.000021"/>
</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-25T23:33:51.762293" elapsed="0.101453">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:51.864102" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:51.863875" elapsed="0.000324"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:51.863852" elapsed="0.000379"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:51.864275" elapsed="0.000020"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:33:51.752262" elapsed="0.112143">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:51.864617" elapsed="0.000029"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:33:51.744199" elapsed="0.120585">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:33:56.916357" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:33:56.915949" elapsed="0.000443"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:33:56.917161" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:33:56.916903" elapsed="0.000339">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:56.917422" 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-25T23:33:56.916557" elapsed="0.000890"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:33:56.918053" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:33:56.917603" elapsed="0.000478"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:33:56.918380" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:33:56.918538" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:33:56.918235" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:56.918971" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:56.918723" 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-25T23:33:56.920016" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:56.919759" elapsed="0.000302"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:33:56.920476" 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-25T23:33:56.920210" 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-25T23:33:56.920846" 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-25T23:33:56.921036" 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-25T23:33:56.921196" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:33:56.920721" elapsed="0.000531"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:33:56.920560" elapsed="0.000723"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:33:56.921330" elapsed="0.000034"/>
</return>
<msg time="2026-04-25T23:33:56.921495" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:33:56.919399" elapsed="0.002122"/>
</kw>
<status status="PASS" start="2026-04-25T23:33:56.919094" elapsed="0.002459"/>
</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-25T23:33:56.921725" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:56.921578" elapsed="0.000202"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:56.919071" elapsed="0.002729"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:33:56.922376" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:33:56.921931" elapsed="0.000472"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:33:56.922451" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:33:56.915305" elapsed="0.007284"/>
</kw>
<msg time="2026-04-25T23:33:56.922645" 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-25T23:33:56.903043" elapsed="0.019669"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:56.934786" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:56.946705" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:56.958478" 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-25T23:33:56.958661" 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-25T23:33:56.958839" 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-25T23:33:56.959193" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:56.959058" elapsed="0.000190"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:56.959043" 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-25T23:33:56.959427" 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-25T23:33:56.959588" 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-25T23:33:56.959756" elapsed="0.000030"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:33:56.959015" elapsed="0.000804"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:33:56.958914" 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-25T23:33:56.959981" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:56.960056" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:33:56.960165" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:33:56.898836" elapsed="0.061354"/>
</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-25T23:33:56.961417" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:33:56.961184" elapsed="0.000296">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:56.961572" 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-25T23:33:56.960848" elapsed="0.000748"/>
</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-25T23:33:56.961935" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:56.961664" elapsed="0.000347"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:33:56.962497" 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-25T23:33:56.962203" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-25T23:33:56.962035" elapsed="0.000524"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:56.961647" elapsed="0.000933"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:33:56.964858" 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-25T23:33:56.962736" elapsed="0.002149"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:33:56.964936" elapsed="0.000030"/>
</return>
<msg time="2026-04-25T23:33:56.965088" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:33:56.960502" elapsed="0.004610"/>
</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-25T23:33:56.966294" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:33:56.966054" elapsed="0.000304">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:33:56.966517" 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-25T23:33:56.965731" elapsed="0.000816"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:33:56.966792" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-25T23:33:56.966627" elapsed="0.000227"/>
</branch>
<status status="PASS" start="2026-04-25T23:33:56.966605" elapsed="0.000273"/>
</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-25T23:33:56.967016" 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-25T23:33:56.967174" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:33:56.967238" elapsed="0.000016"/>
</return>
<msg time="2026-04-25T23:33:56.969251" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:33:56.965406" elapsed="0.003873"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:56.970745" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:56.970472" elapsed="0.000323"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:33:56.971180" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:33:56.970937" 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-25T23:33:56.979674" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:33:56.979829" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:33:56.979924" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:33:56.973338" elapsed="0.006946">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:33:56.971288" elapsed="0.009076">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:56.980547" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:56.980396" elapsed="0.000218"/>
</branch>
<status status="FAIL" start="2026-04-25T23:33:56.971270" elapsed="0.009367">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:56.981052" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:56.981186" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:33:56.981148" elapsed="0.000079"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:56.981131" 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-25T23:33:56.981378" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:33:56.981446" elapsed="0.000015"/>
</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-25T23:33:56.969580" elapsed="0.011976">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:56.981629" elapsed="0.000015"/>
</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-25T23:33:56.881262" elapsed="0.100478">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:33:56.981999" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:33:56.981832" elapsed="0.000238"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:33:56.981816" elapsed="0.000325"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:33:56.982178" elapsed="0.000015"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:33:56.874360" elapsed="0.107916">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:33:56.982437" elapsed="0.000021"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:33:56.865451" elapsed="0.117098">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:34:02.036662" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:34:02.036266" elapsed="0.000444"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:34:02.037470" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:34:02.037212" elapsed="0.000333">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:02.037639" 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-25T23:34:02.036875" elapsed="0.000788"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:34:02.038213" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:34:02.037833" elapsed="0.000407"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:34:02.038532" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:34:02.038714" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:34:02.038389" elapsed="0.000351"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:02.039128" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:02.038885" 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-25T23:34:02.040122" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:02.039869" elapsed="0.000298"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:34:02.040623" 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-25T23:34:02.040315" 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-25T23:34:02.041112" elapsed="0.000033"/>
</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-25T23:34:02.041353" 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-25T23:34:02.041519" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:34:02.040914" elapsed="0.000662"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:34:02.040740" elapsed="0.000866"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:34:02.041652" elapsed="0.000049"/>
</return>
<msg time="2026-04-25T23:34:02.041842" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:34:02.039545" elapsed="0.002329"/>
</kw>
<status status="PASS" start="2026-04-25T23:34:02.039248" elapsed="0.002659"/>
</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-25T23:34:02.042066" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:02.041931" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:02.039226" elapsed="0.002915"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:34:02.042728" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:34:02.042271" elapsed="0.000485"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:34:02.042803" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:34:02.035645" elapsed="0.007280"/>
</kw>
<msg time="2026-04-25T23:34:02.043036" 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-25T23:34:02.023522" elapsed="0.019577"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:02.055017" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:02.066577" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:02.078114" 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-25T23:34:02.078299" 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-25T23:34:02.078464" 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-25T23:34:02.078848" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:02.078711" elapsed="0.000192"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:02.078677" 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-25T23:34:02.079054" 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-25T23:34:02.079206" 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-25T23:34:02.079356" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:34:02.078645" elapsed="0.000763"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:34:02.078541" 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-25T23:34:02.079568" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:02.079642" elapsed="0.000016"/>
</return>
<msg time="2026-04-25T23:34:02.079776" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:34:02.019287" elapsed="0.060515"/>
</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-25T23:34:02.081081" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:34:02.080807" elapsed="0.000347">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:02.081245" 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-25T23:34:02.080442" elapsed="0.000827"/>
</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-25T23:34:02.081574" elapsed="0.000092"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:02.081338" elapsed="0.000380"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:34:02.082209" 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-25T23:34:02.081912" elapsed="0.000323"/>
</kw>
<status status="PASS" start="2026-04-25T23:34:02.081743" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:02.081320" elapsed="0.000971"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:34:02.084522" 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-25T23:34:02.082428" elapsed="0.002120"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:34:02.084599" elapsed="0.000030"/>
</return>
<msg time="2026-04-25T23:34:02.084767" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:34:02.080114" elapsed="0.004677"/>
</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-25T23:34:02.085978" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:34:02.085747" elapsed="0.000292">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:02.086131" 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-25T23:34:02.085412" elapsed="0.000742"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:34:02.086355" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-25T23:34:02.086222" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:02.086205" elapsed="0.000233"/>
</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-25T23:34:02.086571" 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-25T23:34:02.086747" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:34:02.086811" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:34:02.088768" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:34:02.085107" elapsed="0.003688"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:02.090155" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:02.089911" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:02.090577" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:02.090339" 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-25T23:34:02.102310" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:34:02.102581" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:34:02.102832" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:34:02.092630" elapsed="0.010971">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:34:02.090698" elapsed="0.013117">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:02.104210" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:02.103888" elapsed="0.000466"/>
</branch>
<status status="FAIL" start="2026-04-25T23:34:02.090666" elapsed="0.013739">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:02.105268" elapsed="0.000057"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:02.105639" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:34:02.105552" elapsed="0.000218"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:02.105497" 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-25T23:34:02.106198" elapsed="0.000049"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:34:02.106356" elapsed="0.000035"/>
</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-25T23:34:02.089111" elapsed="0.017484">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:02.106791" elapsed="0.000035"/>
</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-25T23:34:02.001144" elapsed="0.105858">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:02.107570" elapsed="0.000051"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:02.107205" elapsed="0.000550"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:02.107169" elapsed="0.000638"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:02.107877" elapsed="0.000032"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:34:01.992423" elapsed="0.115665">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:02.108433" elapsed="0.000046"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:34:01.983181" elapsed="0.125567">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:34:07.159183" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:34:07.158785" elapsed="0.000432"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:34:07.159961" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:34:07.159713" elapsed="0.000320">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:07.160125" 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-25T23:34:07.159376" elapsed="0.000774"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:34:07.160679" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:34:07.160300" elapsed="0.000421"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:34:07.161008" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:34:07.161163" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:34:07.160870" elapsed="0.000318"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:07.161573" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:07.161331" 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-25T23:34:07.162570" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:07.162305" elapsed="0.000310"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:34:07.163045" 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-25T23:34:07.162780" 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-25T23:34:07.163383" 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-25T23:34:07.163575" 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-25T23:34:07.163812" elapsed="0.000027"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:34:07.163262" elapsed="0.000614"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:34:07.163123" elapsed="0.000783"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:34:07.163952" elapsed="0.000034"/>
</return>
<msg time="2026-04-25T23:34:07.164116" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:34:07.161996" elapsed="0.002145"/>
</kw>
<status status="PASS" start="2026-04-25T23:34:07.161707" elapsed="0.002468"/>
</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-25T23:34:07.164333" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:07.164199" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:07.161671" elapsed="0.002737"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:34:07.164990" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:34:07.164539" elapsed="0.000478"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:34:07.165065" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:34:07.158159" elapsed="0.007028"/>
</kw>
<msg time="2026-04-25T23:34:07.165240" 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-25T23:34:07.146215" elapsed="0.019072"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:07.177084" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:07.188696" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:07.200309" 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-25T23:34:07.200486" 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-25T23:34:07.200646" 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-25T23:34:07.201006" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:07.200875" elapsed="0.000186"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:07.200861" elapsed="0.000223"/>
</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-25T23:34:07.201211" 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-25T23:34:07.201365" 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-25T23:34:07.201518" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:34:07.200833" elapsed="0.000772"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:34:07.200734" 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-25T23:34:07.201780" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:07.201856" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:34:07.201964" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:34:07.142153" elapsed="0.059837"/>
</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-25T23:34:07.203204" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:34:07.202973" elapsed="0.000293">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:07.203356" 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-25T23:34:07.202632" elapsed="0.000748"/>
</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-25T23:34:07.203678" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:07.203449" elapsed="0.000301"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:34:07.204220" 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-25T23:34:07.203935" elapsed="0.000310"/>
</kw>
<status status="PASS" start="2026-04-25T23:34:07.203774" elapsed="0.000505"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:07.203431" elapsed="0.000869"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:34:07.206538" 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-25T23:34:07.204435" elapsed="0.002129"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:34:07.206617" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:34:07.206783" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:34:07.202295" elapsed="0.004512"/>
</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-25T23:34:07.207969" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:34:07.207742" elapsed="0.000287">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:07.208119" 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-25T23:34:07.207410" elapsed="0.000733"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:34:07.208342" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-25T23:34:07.208210" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:07.208193" elapsed="0.000231"/>
</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-25T23:34:07.208556" 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-25T23:34:07.208727" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:34:07.208792" elapsed="0.000014"/>
</return>
<msg time="2026-04-25T23:34:07.210748" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:34:07.207103" elapsed="0.003672"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:07.212109" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:07.211867" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:07.212529" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:07.212292" 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-25T23:34:07.222353" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:34:07.222526" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:34:07.222643" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:34:07.214809" elapsed="0.008404">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:34:07.212637" elapsed="0.010760">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:07.223828" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:07.223470" elapsed="0.000509"/>
</branch>
<status status="FAIL" start="2026-04-25T23:34:07.212618" elapsed="0.011414">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:07.224872" elapsed="0.000057"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:07.225173" elapsed="0.000031"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:34:07.225087" elapsed="0.000179"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:07.225048" elapsed="0.000266"/>
</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-25T23:34:07.225602" elapsed="0.000047"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:34:07.225785" elapsed="0.000034"/>
</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-25T23:34:07.211067" elapsed="0.014952">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:07.226183" elapsed="0.000034"/>
</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-25T23:34:07.124475" elapsed="0.101913">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:07.227022" elapsed="0.000056"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:07.226617" elapsed="0.000576"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:07.226574" elapsed="0.000674"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:07.227325" elapsed="0.000034"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:34:07.118264" elapsed="0.109285">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:07.227953" elapsed="0.000052"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:34:07.109456" elapsed="0.118768">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:34:12.278840" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:34:12.278432" elapsed="0.000442"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:34:12.279611" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:34:12.279361" elapsed="0.000339">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:12.279854" 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-25T23:34:12.279038" elapsed="0.000841"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:34:12.280441" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:34:12.280030" elapsed="0.000438"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:34:12.280773" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:34:12.280932" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:34:12.280615" elapsed="0.000346"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:12.281347" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:12.281104" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:12.282331" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:12.282078" elapsed="0.000298"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:34:12.282802" 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-25T23:34:12.282522" elapsed="0.000307"/>
</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-25T23:34:12.283141" 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-25T23:34:12.283333" 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-25T23:34:12.283494" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:34:12.283019" elapsed="0.000532"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:34:12.282880" elapsed="0.000701"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:34:12.283626" elapsed="0.000033"/>
</return>
<msg time="2026-04-25T23:34:12.283805" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:34:12.281770" elapsed="0.002060"/>
</kw>
<status status="PASS" start="2026-04-25T23:34:12.281469" elapsed="0.002394"/>
</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-25T23:34:12.284021" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:12.283887" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:12.281446" elapsed="0.002663"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:34:12.284674" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:34:12.284239" elapsed="0.000477"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:34:12.284766" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:34:12.277833" elapsed="0.007056"/>
</kw>
<msg time="2026-04-25T23:34:12.284948" 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-25T23:34:12.265859" elapsed="0.019139"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:12.296821" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:12.308481" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:12.325958" elapsed="0.000044"/>
</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-25T23:34:12.326242" elapsed="0.000033"/>
</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-25T23:34:12.326485" elapsed="0.000030"/>
</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-25T23:34:12.327036" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:12.326837" elapsed="0.000281"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:12.326814" elapsed="0.000339"/>
</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-25T23:34:12.327343" elapsed="0.000030"/>
</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-25T23:34:12.327573" elapsed="0.000029"/>
</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-25T23:34:12.327822" elapsed="0.000031"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:34:12.326771" elapsed="0.001132"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:34:12.326596" elapsed="0.001344"/>
</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-25T23:34:12.328153" elapsed="0.000031"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:12.328265" elapsed="0.000023"/>
</return>
<msg time="2026-04-25T23:34:12.328431" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:34:12.261819" elapsed="0.066650"/>
</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-25T23:34:12.330269" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:34:12.329923" elapsed="0.000439">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:12.330499" 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-25T23:34:12.329414" elapsed="0.001121"/>
</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-25T23:34:12.331006" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:12.330638" elapsed="0.000452"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:34:12.331801" 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-25T23:34:12.331354" elapsed="0.000484"/>
</kw>
<status status="PASS" start="2026-04-25T23:34:12.331124" elapsed="0.000765"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:12.330611" elapsed="0.001310"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:34:12.334502" 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-25T23:34:12.332153" elapsed="0.002376"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:34:12.334579" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:34:12.334744" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:34:12.328951" elapsed="0.005818"/>
</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-25T23:34:12.335932" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:34:12.335696" elapsed="0.000297">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:12.336142" 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-25T23:34:12.335364" elapsed="0.000803"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:34:12.336371" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-25T23:34:12.336237" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:12.336219" elapsed="0.000234"/>
</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-25T23:34:12.336585" 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-25T23:34:12.336758" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:34:12.336824" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:34:12.338773" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:34:12.335057" elapsed="0.003742"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:12.340161" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:12.339897" elapsed="0.000310"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:12.340585" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:12.340347" 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-25T23:34:12.349674" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:34:12.349827" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:34:12.349932" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:34:12.342643" elapsed="0.007648">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:34:12.340707" elapsed="0.009665">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:12.350542" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:12.350402" elapsed="0.000202"/>
</branch>
<status status="FAIL" start="2026-04-25T23:34:12.340675" elapsed="0.009952">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:12.350999" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:12.351130" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:34:12.351091" elapsed="0.000081"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:12.351074" 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-25T23:34:12.351320" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:34:12.351387" elapsed="0.000015"/>
</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-25T23:34:12.339096" elapsed="0.012395">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:12.351563" elapsed="0.000015"/>
</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-25T23:34:12.244567" elapsed="0.107087">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:12.351922" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:12.351759" elapsed="0.000234"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:12.351742" elapsed="0.000337"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:12.352118" elapsed="0.000015"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:34:12.237359" elapsed="0.114856">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:12.352367" elapsed="0.000022"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:34:12.228936" elapsed="0.123535">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:34:17.402952" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:34:17.402540" elapsed="0.000446"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:34:17.403733" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:34:17.403468" elapsed="0.000342">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:17.403903" 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-25T23:34:17.403148" elapsed="0.000779"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:34:17.404487" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:34:17.404080" elapsed="0.000434"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:34:17.404828" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:34:17.404986" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:34:17.404664" elapsed="0.000348"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:17.405407" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:17.405156" 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-25T23:34:17.406408" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:17.406152" elapsed="0.000302"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:34:17.406885" 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-25T23:34:17.406602" elapsed="0.000310"/>
</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-25T23:34:17.407229" 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-25T23:34:17.407423" 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-25T23:34:17.407584" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:34:17.407107" elapsed="0.000534"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:34:17.406964" elapsed="0.000707"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:34:17.407732" elapsed="0.000034"/>
</return>
<msg time="2026-04-25T23:34:17.407898" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:34:17.405845" elapsed="0.002078"/>
</kw>
<status status="PASS" start="2026-04-25T23:34:17.405527" elapsed="0.002428"/>
</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-25T23:34:17.408114" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:17.407980" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:17.405505" elapsed="0.002684"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:34:17.408773" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:34:17.408321" elapsed="0.000479"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:34:17.408849" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:34:17.401941" elapsed="0.007029"/>
</kw>
<msg time="2026-04-25T23:34:17.409076" 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-25T23:34:17.389963" elapsed="0.019163"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:17.420966" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:17.432697" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:17.444294" 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-25T23:34:17.444473" 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-25T23:34:17.444634" 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-25T23:34:17.445003" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:17.444869" elapsed="0.000188"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:17.444854" 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-25T23:34:17.445208" 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-25T23:34:17.445361" 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-25T23:34:17.445514" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:34:17.444827" elapsed="0.000739"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:34:17.444728" elapsed="0.000862"/>
</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-25T23:34:17.445763" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:17.445841" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:34:17.445950" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:34:17.385907" elapsed="0.060068"/>
</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-25T23:34:17.447164" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:34:17.446932" elapsed="0.000295">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:17.447323" 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-25T23:34:17.446588" elapsed="0.000759"/>
</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-25T23:34:17.447645" elapsed="0.000068"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:17.447415" elapsed="0.000337"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:34:17.448240" 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-25T23:34:17.447943" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-25T23:34:17.447776" elapsed="0.000524"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:17.447397" elapsed="0.000924"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:34:17.450572" 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-25T23:34:17.448457" elapsed="0.002142"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:34:17.450650" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:34:17.450818" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:34:17.446283" elapsed="0.004559"/>
</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-25T23:34:17.452005" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:34:17.451772" elapsed="0.000295">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:17.452159" 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-25T23:34:17.451438" elapsed="0.000745"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:34:17.452385" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-25T23:34:17.452252" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:17.452234" elapsed="0.000232"/>
</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-25T23:34:17.452598" 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-25T23:34:17.452772" elapsed="0.000022"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:34:17.452838" elapsed="0.000014"/>
</return>
<msg time="2026-04-25T23:34:17.454830" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:34:17.451132" elapsed="0.003725"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:17.456200" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:17.455955" elapsed="0.000290"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:17.456622" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:17.456385" elapsed="0.000280"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-25T23:34:17.467536" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:34:17.467749" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:34:17.467881" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:34:17.458737" elapsed="0.009624">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:34:17.456746" elapsed="0.011725">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:17.468734" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:17.468515" elapsed="0.000310"/>
</branch>
<status status="FAIL" start="2026-04-25T23:34:17.456727" elapsed="0.012131">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:17.469357" elapsed="0.000034"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:17.469537" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:34:17.469486" elapsed="0.000107"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:17.469462" 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-25T23:34:17.469886" elapsed="0.000031"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:34:17.469986" elapsed="0.000024"/>
</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-25T23:34:17.455149" elapsed="0.014988">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:17.470240" elapsed="0.000021"/>
</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-25T23:34:17.368260" elapsed="0.102112">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:17.470758" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:17.470500" elapsed="0.000360"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:17.470477" elapsed="0.000416"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:17.470938" elapsed="0.000020"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:34:17.362039" elapsed="0.109033">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:17.471288" elapsed="0.000030"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:34:17.353174" elapsed="0.118265">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:34:22.523226" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:34:22.522832" elapsed="0.000439"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:34:22.524041" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:34:22.523783" elapsed="0.000332">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:22.524208" 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-25T23:34:22.523439" elapsed="0.000798"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:34:22.524797" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:34:22.524388" elapsed="0.000436"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:34:22.525114" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:34:22.525276" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:34:22.524973" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:22.525700" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:22.525442" 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-25T23:34:22.526672" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:22.526420" elapsed="0.000313"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:34:22.527159" 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-25T23:34:22.526884" elapsed="0.000300"/>
</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-25T23:34:22.527638" 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-25T23:34:22.527882" 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-25T23:34:22.528128" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:34:22.527512" elapsed="0.000678"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:34:22.527340" elapsed="0.000883"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:34:22.528270" elapsed="0.000033"/>
</return>
<msg time="2026-04-25T23:34:22.528435" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:34:22.526116" elapsed="0.002343"/>
</kw>
<status status="PASS" start="2026-04-25T23:34:22.525829" elapsed="0.002663"/>
</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-25T23:34:22.528649" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:22.528515" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:22.525805" elapsed="0.002936"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:34:22.529318" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:34:22.528873" elapsed="0.000471"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:34:22.529393" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:34:22.522217" elapsed="0.007299"/>
</kw>
<msg time="2026-04-25T23:34:22.529569" 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-25T23:34:22.510196" elapsed="0.019419"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:22.541450" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:22.553181" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:22.564794" 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-25T23:34:22.564977" elapsed="0.000061"/>
</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-25T23:34:22.565182" 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-25T23:34:22.565540" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:22.565408" elapsed="0.000188"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:22.565393" 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-25T23:34:22.565859" 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-25T23:34:22.566024" 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-25T23:34:22.566177" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:34:22.565363" elapsed="0.000912"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:34:22.565258" elapsed="0.001043"/>
</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-25T23:34:22.566440" elapsed="0.000028"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:22.566526" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:34:22.566639" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:34:22.506140" elapsed="0.060525"/>
</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-25T23:34:22.567965" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:34:22.567679" elapsed="0.000356">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:22.568128" 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-25T23:34:22.567341" elapsed="0.000812"/>
</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-25T23:34:22.568457" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:22.568222" elapsed="0.000292"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:34:22.569008" 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-25T23:34:22.568717" elapsed="0.000317"/>
</kw>
<status status="PASS" start="2026-04-25T23:34:22.568538" elapsed="0.000531"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:22.568204" elapsed="0.000886"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:34:22.571320" 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-25T23:34:22.569226" elapsed="0.002120"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:34:22.571398" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:34:22.571551" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:34:22.567000" elapsed="0.004576"/>
</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-25T23:34:22.572779" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:34:22.572535" elapsed="0.000306">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:22.572932" 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-25T23:34:22.572209" elapsed="0.000747"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:34:22.573159" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-25T23:34:22.573025" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:22.573007" elapsed="0.000233"/>
</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-25T23:34:22.573372" 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-25T23:34:22.573529" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:34:22.573593" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:34:22.575581" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:34:22.571897" elapsed="0.003711"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:22.576973" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:22.576726" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:22.577393" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:22.577156" 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-25T23:34:22.587041" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:34:22.587180" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:34:22.587311" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:34:22.579505" elapsed="0.008472">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:34:22.577501" elapsed="0.010653">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:22.588537" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:22.588224" elapsed="0.000455"/>
</branch>
<status status="FAIL" start="2026-04-25T23:34:22.577482" elapsed="0.011283">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:22.589628" elapsed="0.000088"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:22.589961" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:34:22.589876" elapsed="0.000175"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:22.589839" 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-25T23:34:22.590389" elapsed="0.000046"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:34:22.590541" elapsed="0.000033"/>
</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-25T23:34:22.575925" elapsed="0.014878">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:22.590971" elapsed="0.000034"/>
</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-25T23:34:22.488592" elapsed="0.102588">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:22.591796" elapsed="0.000053"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:22.591401" elapsed="0.000554"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:22.591364" elapsed="0.000642"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:22.592076" elapsed="0.000033"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:34:22.481020" elapsed="0.111267">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:22.592631" elapsed="0.000046"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:34:22.472166" elapsed="0.120732">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:34:27.646904" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:34:27.646494" elapsed="0.000445"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:34:27.647675" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:34:27.647421" elapsed="0.000348">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:27.647922" 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-25T23:34:27.647101" elapsed="0.000846"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:34:27.648479" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:34:27.648099" elapsed="0.000407"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:34:27.648809" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:34:27.648983" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:34:27.648654" elapsed="0.000354"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:27.649396" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:27.649152" 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-25T23:34:27.650390" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:27.650140" elapsed="0.000295"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:34:27.650865" 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-25T23:34:27.650583" elapsed="0.000307"/>
</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-25T23:34:27.651214" 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-25T23:34:27.651405" 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-25T23:34:27.651567" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:34:27.651092" elapsed="0.000531"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:34:27.650946" elapsed="0.000710"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:34:27.651721" elapsed="0.000035"/>
</return>
<msg time="2026-04-25T23:34:27.651888" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:34:27.649834" elapsed="0.002079"/>
</kw>
<status status="PASS" start="2026-04-25T23:34:27.649524" elapsed="0.002421"/>
</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-25T23:34:27.652102" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:27.651970" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:27.649498" elapsed="0.002677"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:34:27.652755" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:34:27.652303" elapsed="0.000478"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:34:27.652839" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:34:27.645896" elapsed="0.007071"/>
</kw>
<msg time="2026-04-25T23:34:27.653019" 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-25T23:34:27.633857" elapsed="0.019209"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:27.664921" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:27.676453" elapsed="0.000026"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:27.688133" 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-25T23:34:27.688313" elapsed="0.000020"/>
</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-25T23:34:27.688474" 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-25T23:34:27.688849" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:27.688702" elapsed="0.000206"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:27.688674" 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-25T23:34:27.689057" 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-25T23:34:27.689210" 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-25T23:34:27.689364" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:34:27.688647" elapsed="0.000769"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:34:27.688549" elapsed="0.000892"/>
</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-25T23:34:27.689574" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:27.689648" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:34:27.689776" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:34:27.629782" elapsed="0.060020"/>
</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-25T23:34:27.691505" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:34:27.691265" elapsed="0.000310">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:27.691665" 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-25T23:34:27.690887" elapsed="0.000817"/>
</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-25T23:34:27.692008" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:27.691775" elapsed="0.000288"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:34:27.692537" 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-25T23:34:27.692252" elapsed="0.000310"/>
</kw>
<status status="PASS" start="2026-04-25T23:34:27.692086" elapsed="0.000511"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:27.691757" elapsed="0.000861"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:34:27.694926" 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-25T23:34:27.692768" elapsed="0.002184"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:34:27.695003" elapsed="0.000028"/>
</return>
<msg time="2026-04-25T23:34:27.695152" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:34:27.690182" elapsed="0.004994"/>
</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-25T23:34:27.696345" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:34:27.696113" elapsed="0.000294">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:27.696538" 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-25T23:34:27.695787" elapsed="0.000776"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:34:27.696783" elapsed="0.000039"/>
</return>
<status status="PASS" start="2026-04-25T23:34:27.696633" elapsed="0.000223"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:27.696614" elapsed="0.000265"/>
</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-25T23:34:27.697017" 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-25T23:34:27.697174" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:34:27.697239" elapsed="0.000014"/>
</return>
<msg time="2026-04-25T23:34:27.699175" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:34:27.695466" elapsed="0.003735"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:27.700532" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:27.700290" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:27.700986" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:27.700732" 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-25T23:34:27.711238" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:34:27.711378" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:34:27.711473" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:34:27.703109" elapsed="0.008753">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:34:27.701093" elapsed="0.010851">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:27.712114" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:27.711975" elapsed="0.000202"/>
</branch>
<status status="FAIL" start="2026-04-25T23:34:27.701075" elapsed="0.011125">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:27.712550" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:27.712679" elapsed="0.000041"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:34:27.712643" elapsed="0.000105"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:27.712626" 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-25T23:34:27.712930" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:34:27.712998" elapsed="0.000015"/>
</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-25T23:34:27.699494" elapsed="0.013607">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:27.713173" elapsed="0.000015"/>
</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-25T23:34:27.610135" elapsed="0.103129">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:27.713515" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:27.713354" elapsed="0.000231"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:27.713338" elapsed="0.000300"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:27.713674" elapsed="0.000031"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:34:27.602817" elapsed="0.110971">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:27.713951" elapsed="0.000021"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:34:27.593539" elapsed="0.120516">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:34:32.768183" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:34:32.767788" elapsed="0.000431"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:34:32.768972" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:34:32.768716" elapsed="0.000331">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:32.769139" 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-25T23:34:32.768379" elapsed="0.000784"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:34:32.769704" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:34:32.769312" elapsed="0.000420"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:34:32.770022" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:34:32.770183" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:34:32.769879" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:32.770634" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:32.770350" elapsed="0.000346"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:32.771632" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:32.771380" elapsed="0.000297"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:34:32.772114" 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-25T23:34:32.771851" 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-25T23:34:32.772452" 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-25T23:34:32.772642" 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-25T23:34:32.772817" elapsed="0.000021"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:34:32.772332" elapsed="0.000542"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:34:32.772190" elapsed="0.000714"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:34:32.772950" elapsed="0.000032"/>
</return>
<msg time="2026-04-25T23:34:32.773111" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:34:32.771073" elapsed="0.002062"/>
</kw>
<status status="PASS" start="2026-04-25T23:34:32.770773" elapsed="0.002394"/>
</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-25T23:34:32.773323" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:32.773190" elapsed="0.000187"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:32.770750" elapsed="0.002647"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:34:32.773985" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:34:32.773524" elapsed="0.000487"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:34:32.774058" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:34:32.767173" elapsed="0.007006"/>
</kw>
<msg time="2026-04-25T23:34:32.774314" 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-25T23:34:32.755234" elapsed="0.019130"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:32.786179" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:32.797921" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:32.809568" 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-25T23:34:32.809760" 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-25T23:34:32.809923" 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-25T23:34:32.810272" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:32.810141" elapsed="0.000186"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:32.810127" elapsed="0.000222"/>
</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-25T23:34:32.810495" 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-25T23:34:32.810653" 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-25T23:34:32.810822" elapsed="0.000023"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:34:32.810099" elapsed="0.000790"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:34:32.809997" 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-25T23:34:32.811052" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:32.811127" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:34:32.811237" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:34:32.751214" elapsed="0.060048"/>
</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-25T23:34:32.812490" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:34:32.812214" elapsed="0.000343">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:32.812649" 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-25T23:34:32.811893" 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-25T23:34:32.813008" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:32.812772" elapsed="0.000328"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:34:32.813575" 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-25T23:34:32.813287" elapsed="0.000313"/>
</kw>
<status status="PASS" start="2026-04-25T23:34:32.813124" elapsed="0.000511"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:32.812752" elapsed="0.000904"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:34:32.815881" 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-25T23:34:32.813808" elapsed="0.002099"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:34:32.815958" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:34:32.816109" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:34:32.811567" elapsed="0.004566"/>
</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-25T23:34:32.817292" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:34:32.817062" elapsed="0.000291">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:32.817444" 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-25T23:34:32.816741" elapsed="0.000739"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:34:32.817701" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-25T23:34:32.817551" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:32.817532" elapsed="0.000254"/>
</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-25T23:34:32.817920" 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-25T23:34:32.818076" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:34:32.818139" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:34:32.820135" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:34:32.816421" elapsed="0.003740"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:32.821504" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:32.821262" elapsed="0.000287"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:32.821942" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:32.821703" 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-25T23:34:32.831357" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:34:32.831537" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:34:32.831680" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:34:32.824014" elapsed="0.008204">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:34:32.822049" elapsed="0.010278">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:32.832576" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:32.832371" elapsed="0.000293"/>
</branch>
<status status="FAIL" start="2026-04-25T23:34:32.822031" elapsed="0.010686">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:32.833215" elapsed="0.000035"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:32.833394" elapsed="0.000018"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:34:32.833344" elapsed="0.000105"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:32.833321" 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-25T23:34:32.833725" elapsed="0.000032"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:34:32.833825" elapsed="0.000021"/>
</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-25T23:34:32.820458" elapsed="0.013513">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:32.834073" elapsed="0.000022"/>
</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-25T23:34:32.733478" elapsed="0.100726">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:32.834579" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:32.834329" elapsed="0.000349"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:32.834306" elapsed="0.000424"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:32.834774" elapsed="0.000020"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:34:32.723606" elapsed="0.111299">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:32.835118" elapsed="0.000029"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:34:32.714718" elapsed="0.120546">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:34:37.888563" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:34:37.888167" elapsed="0.000432"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:34:37.889368" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:34:37.889102" elapsed="0.000345">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:37.889540" 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-25T23:34:37.888779" elapsed="0.000786"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:34:37.890121" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:34:37.889739" elapsed="0.000409"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:34:37.890438" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:34:37.890676" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:34:37.890297" elapsed="0.000423"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:37.891110" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:37.890866" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:37.892177" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:37.891865" elapsed="0.000357"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:34:37.892633" 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-25T23:34:37.892371" 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-25T23:34:37.892996" 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-25T23:34:37.893188" 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-25T23:34:37.893417" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:34:37.892874" elapsed="0.000601"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:34:37.892730" elapsed="0.000776"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:34:37.893552" elapsed="0.000033"/>
</return>
<msg time="2026-04-25T23:34:37.893733" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:34:37.891536" elapsed="0.002224"/>
</kw>
<status status="PASS" start="2026-04-25T23:34:37.891231" elapsed="0.002562"/>
</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-25T23:34:37.893952" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:37.893818" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:37.891208" elapsed="0.002820"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:34:37.894599" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:34:37.894159" elapsed="0.000467"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:34:37.894675" elapsed="0.000043"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:34:37.887533" elapsed="0.007281"/>
</kw>
<msg time="2026-04-25T23:34:37.894867" 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-25T23:34:37.872364" elapsed="0.022551"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:37.906851" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:37.921104" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:37.932987" 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-25T23:34:37.933171" 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-25T23:34:37.933334" 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-25T23:34:37.933679" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:37.933548" elapsed="0.000202"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:37.933534" 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-25T23:34:37.933899" 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-25T23:34:37.934050" 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-25T23:34:37.934201" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:34:37.933507" elapsed="0.000781"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:34:37.933407" 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-25T23:34:37.934450" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:37.934525" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:34:37.934634" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:34:37.868327" elapsed="0.066333"/>
</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-25T23:34:37.935873" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:34:37.935619" elapsed="0.000318">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:37.936053" 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-25T23:34:37.935294" 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-25T23:34:37.936386" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:37.936147" elapsed="0.000296"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:34:37.936937" 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-25T23:34:37.936630" elapsed="0.000333"/>
</kw>
<status status="PASS" start="2026-04-25T23:34:37.936466" elapsed="0.000561"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:37.936129" elapsed="0.000920"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:34:37.939280" 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-25T23:34:37.937186" elapsed="0.002120"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:34:37.939356" elapsed="0.000028"/>
</return>
<msg time="2026-04-25T23:34:37.939506" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:34:37.934983" elapsed="0.004547"/>
</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-25T23:34:37.940763" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:34:37.940517" elapsed="0.000309">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:37.940918" 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-25T23:34:37.940198" elapsed="0.000744"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:34:37.941145" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-25T23:34:37.941011" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:37.940993" elapsed="0.000233"/>
</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-25T23:34:37.941367" 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-25T23:34:37.941525" elapsed="0.000019"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:34:37.941587" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:34:37.943548" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:34:37.939850" elapsed="0.003725"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:37.944949" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:37.944702" elapsed="0.000292"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:37.945371" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:37.945133" 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-25T23:34:37.955799" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:34:37.955940" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:34:37.956066" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:34:37.947433" elapsed="0.008992">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:34:37.945479" elapsed="0.011026">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:37.956679" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:37.956537" elapsed="0.000223"/>
</branch>
<status status="FAIL" start="2026-04-25T23:34:37.945460" elapsed="0.011323">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:37.957133" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:37.957262" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:34:37.957225" elapsed="0.000076"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:37.957209" elapsed="0.000113"/>
</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-25T23:34:37.957450" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:34:37.957518" elapsed="0.000014"/>
</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-25T23:34:37.943884" elapsed="0.013736">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:37.957711" elapsed="0.000016"/>
</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-25T23:34:37.850616" elapsed="0.107191">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:37.958065" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:37.957897" elapsed="0.000238"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:37.957881" elapsed="0.000276"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:37.958189" elapsed="0.000014"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:34:37.844858" elapsed="0.113423">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:37.958435" elapsed="0.000021"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:34:37.835981" elapsed="0.122559">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:34:43.020073" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:34:43.019604" elapsed="0.000508"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:34:43.020917" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:34:43.020641" elapsed="0.000352">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:43.022622" 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-25T23:34:43.020286" elapsed="0.002367"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:34:43.023632" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:34:43.023240" elapsed="0.000424"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:34:43.023988" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:34:43.024147" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:34:43.023843" elapsed="0.000329"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:43.024570" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:43.024316" 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-25T23:34:43.027350" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:43.027070" elapsed="0.000324"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:34:43.027862" 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-25T23:34:43.027543" elapsed="0.000346"/>
</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-25T23:34:43.028221" 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-25T23:34:43.028414" 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-25T23:34:43.028577" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:34:43.028097" elapsed="0.000537"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:34:43.027948" elapsed="0.000716"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:34:43.028727" elapsed="0.000035"/>
</return>
<msg time="2026-04-25T23:34:43.028895" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:34:43.025462" elapsed="0.003458"/>
</kw>
<status status="PASS" start="2026-04-25T23:34:43.024713" elapsed="0.004239"/>
</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-25T23:34:43.029123" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:43.028976" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:43.024671" elapsed="0.004537"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:34:43.029850" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:34:43.029351" elapsed="0.000530"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:34:43.029933" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:34:43.018773" elapsed="0.011284"/>
</kw>
<msg time="2026-04-25T23:34:43.030109" 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-25T23:34:43.004374" elapsed="0.025783"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:43.042432" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:43.054062" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:43.065718" 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-25T23:34:43.065908" 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-25T23:34:43.066073" 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-25T23:34:43.066438" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:43.066307" elapsed="0.000186"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:43.066291" elapsed="0.000225"/>
</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-25T23:34:43.066642" 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-25T23:34:43.066812" 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-25T23:34:43.066962" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:34:43.066261" elapsed="0.000753"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:34:43.066151" elapsed="0.000889"/>
</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-25T23:34:43.067173" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:43.067247" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:34:43.067362" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:34:43.000238" elapsed="0.067149"/>
</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-25T23:34:43.068626" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:34:43.068375" elapsed="0.000341">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:43.068809" 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-25T23:34:43.068037" elapsed="0.000796"/>
</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-25T23:34:43.069140" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:43.068902" elapsed="0.000296"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:34:43.069711" 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-25T23:34:43.069387" elapsed="0.000351"/>
</kw>
<status status="PASS" start="2026-04-25T23:34:43.069223" elapsed="0.000550"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:43.068884" elapsed="0.000910"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:34:43.072019" 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-25T23:34:43.069931" elapsed="0.002114"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:34:43.072095" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:34:43.072250" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:34:43.067713" elapsed="0.004560"/>
</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-25T23:34:43.073427" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:34:43.073202" elapsed="0.000286">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:43.073658" 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-25T23:34:43.072885" elapsed="0.000812"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:34:43.073906" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-25T23:34:43.073771" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:43.073753" elapsed="0.000235"/>
</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-25T23:34:43.074121" 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-25T23:34:43.074275" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:34:43.074339" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:34:43.076276" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:34:43.072564" elapsed="0.003738"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:43.077712" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:43.077406" elapsed="0.000354"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:43.078137" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:43.077899" 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-25T23:34:43.087329" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:34:43.087522" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:34:43.087633" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:34:43.080177" elapsed="0.007870">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:34:43.078246" elapsed="0.009889">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:43.088329" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:43.088169" elapsed="0.000224"/>
</branch>
<status status="FAIL" start="2026-04-25T23:34:43.078228" elapsed="0.010188">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:43.088847" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:43.088983" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:34:43.088946" elapsed="0.000078"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:43.088928" 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-25T23:34:43.089176" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:34:43.089243" elapsed="0.000014"/>
</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-25T23:34:43.076601" elapsed="0.012748">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:43.089422" elapsed="0.000015"/>
</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-25T23:34:42.976171" elapsed="0.113361">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:43.089813" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:43.089628" elapsed="0.000258"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:43.089611" elapsed="0.000340"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:43.089988" elapsed="0.000015"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:34:42.969548" elapsed="0.120540">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:43.090247" elapsed="0.000021"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:34:42.959193" elapsed="0.131161">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:34:48.142415" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:34:48.141999" elapsed="0.000460"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:34:48.143311" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:34:48.143003" elapsed="0.000395">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:48.143495" 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-25T23:34:48.142643" elapsed="0.000876"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:34:48.144106" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:34:48.143677" elapsed="0.000456"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:34:48.144423" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:34:48.144598" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:34:48.144282" elapsed="0.000341"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:48.145034" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:48.144787" elapsed="0.000293"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:48.146024" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:48.145771" elapsed="0.000298"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:34:48.146478" 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-25T23:34:48.146214" 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-25T23:34:48.146838" 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-25T23:34:48.147031" 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-25T23:34:48.147242" elapsed="0.000023"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:34:48.146714" elapsed="0.000589"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:34:48.146557" elapsed="0.000776"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:34:48.147387" elapsed="0.000036"/>
</return>
<msg time="2026-04-25T23:34:48.147558" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:34:48.145444" elapsed="0.002139"/>
</kw>
<status status="PASS" start="2026-04-25T23:34:48.145156" elapsed="0.002459"/>
</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-25T23:34:48.147789" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:48.147639" elapsed="0.000205"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:48.145132" elapsed="0.002733"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:34:48.148461" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:34:48.147992" elapsed="0.000496"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:34:48.148537" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:34:48.141383" elapsed="0.007283"/>
</kw>
<msg time="2026-04-25T23:34:48.148792" 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-25T23:34:48.129386" elapsed="0.019456"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:48.166909" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:48.188310" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:48.200166" 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-25T23:34:48.200392" 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-25T23:34:48.200562" 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-25T23:34:48.200978" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:48.200838" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:48.200820" 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-25T23:34:48.201195" 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-25T23:34:48.201350" 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-25T23:34:48.201501" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:34:48.200781" elapsed="0.000772"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:34:48.200644" 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-25T23:34:48.201730" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:48.201809" elapsed="0.000017"/>
</return>
<msg time="2026-04-25T23:34:48.201947" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:34:48.125316" elapsed="0.076659"/>
</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-25T23:34:48.203545" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:34:48.203242" elapsed="0.000383">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:48.203732" 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-25T23:34:48.202833" elapsed="0.000925"/>
</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-25T23:34:48.204083" elapsed="0.000078"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:48.203828" elapsed="0.000370"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:34:48.204679" 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-25T23:34:48.204386" elapsed="0.000335"/>
</kw>
<status status="PASS" start="2026-04-25T23:34:48.204223" elapsed="0.000532"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:48.203809" elapsed="0.000968"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:34:48.206979" 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-25T23:34:48.204914" elapsed="0.002092"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:34:48.207058" elapsed="0.000031"/>
</return>
<msg time="2026-04-25T23:34:48.207239" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:34:48.202303" elapsed="0.004961"/>
</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-25T23:34:48.208962" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:34:48.208605" elapsed="0.000448">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:48.209187" 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-25T23:34:48.208135" elapsed="0.001088"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:34:48.209530" elapsed="0.000038"/>
</return>
<status status="PASS" start="2026-04-25T23:34:48.209324" elapsed="0.000292"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:48.209298" elapsed="0.000354"/>
</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-25T23:34:48.209870" elapsed="0.000032"/>
</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-25T23:34:48.210101" elapsed="0.000030"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:34:48.210194" elapsed="0.000022"/>
</return>
<msg time="2026-04-25T23:34:48.213158" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:34:48.207655" elapsed="0.005542"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:48.215252" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:48.214852" elapsed="0.000467"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:48.215728" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:48.215474" 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-25T23:34:48.227986" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:34:48.228181" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:34:48.228319" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:34:48.217796" elapsed="0.011079">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:34:48.215836" elapsed="0.013159">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:48.229251" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:48.229042" elapsed="0.000301"/>
</branch>
<status status="FAIL" start="2026-04-25T23:34:48.215818" elapsed="0.013559">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:48.229922" elapsed="0.000037"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:48.230113" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:34:48.230059" elapsed="0.000114"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:48.230034" 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-25T23:34:48.230447" elapsed="0.000031"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:34:48.230549" elapsed="0.000021"/>
</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-25T23:34:48.213637" elapsed="0.017084">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:48.230833" elapsed="0.000022"/>
</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-25T23:34:48.107640" elapsed="0.123330">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:48.231368" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:48.231124" elapsed="0.000348"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:48.231080" elapsed="0.000425"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:48.231552" elapsed="0.000021"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:34:48.099392" elapsed="0.132322">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:48.231948" elapsed="0.000031"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:34:48.091105" elapsed="0.141001">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:34:53.284735" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:34:53.284307" elapsed="0.000464"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:34:53.285515" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:34:53.285260" elapsed="0.000328">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:53.285697" 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-25T23:34:53.284934" elapsed="0.000790"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:34:53.286266" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:34:53.285880" elapsed="0.000413"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:34:53.286585" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:34:53.286769" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:34:53.286443" elapsed="0.000351"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:53.287183" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:53.286938" elapsed="0.000290"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:53.288176" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:53.287923" elapsed="0.000297"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:34:53.288634" 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-25T23:34:53.288366" 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-25T23:34:53.289011" 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-25T23:34:53.289206" 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-25T23:34:53.289434" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:34:53.288888" elapsed="0.000604"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:34:53.288739" elapsed="0.000784"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:34:53.289570" elapsed="0.000032"/>
</return>
<msg time="2026-04-25T23:34:53.289753" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:34:53.287601" elapsed="0.002178"/>
</kw>
<status status="PASS" start="2026-04-25T23:34:53.287305" elapsed="0.002507"/>
</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-25T23:34:53.289972" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:53.289837" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:53.287281" elapsed="0.002767"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:34:53.290616" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:34:53.290175" elapsed="0.000468"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:34:53.290705" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:34:53.283700" elapsed="0.007131"/>
</kw>
<msg time="2026-04-25T23:34:53.290883" 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-25T23:34:53.271723" elapsed="0.019207"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:53.302785" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:53.314419" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:53.326190" 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-25T23:34:53.326371" 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-25T23:34:53.326533" 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-25T23:34:53.326900" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:53.326767" elapsed="0.000189"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:53.326753" elapsed="0.000225"/>
</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-25T23:34:53.327107" 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-25T23:34:53.327262" elapsed="0.000027"/>
</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-25T23:34:53.327423" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:34:53.326724" elapsed="0.000785"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:34:53.326608" 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-25T23:34:53.327670" elapsed="0.000035"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:53.327762" elapsed="0.000016"/>
</return>
<msg time="2026-04-25T23:34:53.327873" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:34:53.267449" elapsed="0.060450"/>
</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-25T23:34:53.329178" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:34:53.328941" elapsed="0.000301">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:53.329333" 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-25T23:34:53.328560" 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-25T23:34:53.329660" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:53.329426" elapsed="0.000307"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:34:53.330226" 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-25T23:34:53.329923" elapsed="0.000329"/>
</kw>
<status status="PASS" start="2026-04-25T23:34:53.329757" elapsed="0.000529"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:53.329408" elapsed="0.000900"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:34:53.332531" 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-25T23:34:53.330443" elapsed="0.002115"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:34:53.332614" elapsed="0.000028"/>
</return>
<msg time="2026-04-25T23:34:53.332801" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:34:53.328249" elapsed="0.004577"/>
</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-25T23:34:53.334033" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:34:53.333766" elapsed="0.000330">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:53.334188" 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-25T23:34:53.333429" elapsed="0.000783"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:34:53.334416" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-25T23:34:53.334281" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:53.334263" elapsed="0.000235"/>
</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-25T23:34:53.334632" 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-25T23:34:53.334808" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:34:53.334873" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:34:53.336853" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:34:53.333119" elapsed="0.003760"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:53.338235" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:53.337989" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:53.338660" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:53.338421" 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-25T23:34:53.348868" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:34:53.349010" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:34:53.349116" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:34:53.340769" elapsed="0.008711">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:34:53.338787" elapsed="0.010775">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:53.349987" elapsed="0.000049"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:53.349633" elapsed="0.000498"/>
</branch>
<status status="FAIL" start="2026-04-25T23:34:53.338767" elapsed="0.011416">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:53.350999" elapsed="0.000056"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:53.351290" elapsed="0.000029"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:34:53.351209" elapsed="0.000170"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:53.351171" elapsed="0.000257"/>
</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-25T23:34:53.351743" elapsed="0.000048"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:34:53.351899" elapsed="0.000033"/>
</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-25T23:34:53.337181" elapsed="0.014948">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:53.352293" elapsed="0.000033"/>
</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-25T23:34:53.250130" elapsed="0.102369">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:53.353233" elapsed="0.000054"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:53.352762" elapsed="0.000633"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:53.352717" elapsed="0.000729"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:53.353517" elapsed="0.000032"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:34:53.240334" elapsed="0.113426">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:53.354108" elapsed="0.000047"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:34:53.232748" elapsed="0.121596">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:34:58.411442" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:34:58.411020" elapsed="0.000459"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:34:58.412277" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:34:58.411988" elapsed="0.000371">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:58.412543" 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-25T23:34:58.411647" elapsed="0.000921"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:34:58.413120" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:34:58.412738" elapsed="0.000409"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:34:58.413439" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:34:58.413600" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:34:58.413298" elapsed="0.000327"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:58.414031" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:58.413786" 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-25T23:34:58.415054" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:58.414798" elapsed="0.000305"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:34:58.415536" 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-25T23:34:58.415250" elapsed="0.000312"/>
</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-25T23:34:58.415915" 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-25T23:34:58.416108" 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-25T23:34:58.416271" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:34:58.415789" elapsed="0.000543"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:34:58.415618" elapsed="0.000745"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:34:58.416411" elapsed="0.000035"/>
</return>
<msg time="2026-04-25T23:34:58.416579" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:34:58.414470" elapsed="0.002134"/>
</kw>
<status status="PASS" start="2026-04-25T23:34:58.414159" elapsed="0.002477"/>
</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-25T23:34:58.416818" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:58.416661" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:58.414132" elapsed="0.002762"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:34:58.417466" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:34:58.417025" elapsed="0.000468"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:34:58.417542" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:34:58.410395" elapsed="0.007268"/>
</kw>
<msg time="2026-04-25T23:34:58.417736" 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-25T23:34:58.398322" elapsed="0.019465"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:58.429648" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:58.441316" elapsed="0.000026"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:58.453099" 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-25T23:34:58.453282" 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-25T23:34:58.453444" 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-25T23:34:58.453814" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:58.453666" elapsed="0.000204"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:58.453651" 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-25T23:34:58.454021" 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-25T23:34:58.454174" 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-25T23:34:58.454340" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:34:58.453623" elapsed="0.000770"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:34:58.453518" elapsed="0.000900"/>
</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-25T23:34:58.454551" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:58.454626" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:34:58.454754" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:34:58.393993" elapsed="0.060786"/>
</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-25T23:34:58.455988" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:34:58.455752" elapsed="0.000300">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:58.456143" 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-25T23:34:58.455409" 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-25T23:34:58.456467" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:58.456236" elapsed="0.000287"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:34:58.457016" 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-25T23:34:58.456726" elapsed="0.000316"/>
</kw>
<status status="PASS" start="2026-04-25T23:34:58.456546" elapsed="0.000530"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:58.456218" elapsed="0.000879"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:34:58.459359" 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-25T23:34:58.457233" elapsed="0.002152"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:34:58.459436" elapsed="0.000028"/>
</return>
<msg time="2026-04-25T23:34:58.459586" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:34:58.455093" elapsed="0.004517"/>
</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-25T23:34:58.460799" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:34:58.460547" elapsed="0.000315">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:34:58.460991" 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-25T23:34:58.460227" elapsed="0.000789"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:34:58.461219" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-25T23:34:58.461086" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-25T23:34:58.461068" elapsed="0.000233"/>
</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-25T23:34:58.461434" 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-25T23:34:58.461592" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:34:58.461657" elapsed="0.000014"/>
</return>
<msg time="2026-04-25T23:34:58.463648" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:34:58.459919" elapsed="0.003755"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:58.465044" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:58.464798" elapsed="0.000291"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:34:58.465465" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:34:58.465229" elapsed="0.000279"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-25T23:34:58.475047" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:34:58.475190" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:34:58.475286" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:34:58.467526" elapsed="0.008123">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:34:58.465572" elapsed="0.010185">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:58.475934" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:58.475793" elapsed="0.000205"/>
</branch>
<status status="FAIL" start="2026-04-25T23:34:58.465554" elapsed="0.010467">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:58.476385" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:58.476516" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:34:58.476479" elapsed="0.000077"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:58.476461" 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-25T23:34:58.476754" elapsed="0.000024"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:34:58.476828" elapsed="0.000015"/>
</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-25T23:34:58.463993" elapsed="0.012940">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:58.477005" elapsed="0.000015"/>
</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-25T23:34:58.371293" elapsed="0.105807">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:34:58.477360" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:34:58.477194" elapsed="0.000237"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:34:58.477177" elapsed="0.000310"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:34:58.477523" elapsed="0.000015"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:34:58.364033" elapsed="0.113590">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:34:58.477798" elapsed="0.000022"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:34:58.355119" elapsed="0.122789">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:35:03.529427" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:35:03.529019" elapsed="0.000450"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:35:03.530277" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:35:03.529982" elapsed="0.000380">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:35:03.530469" 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-25T23:35:03.529635" elapsed="0.000861"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:35:03.531071" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:35:03.530661" elapsed="0.000437"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:35:03.531400" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:35:03.531578" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:35:03.531250" elapsed="0.000354"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:35:03.532050" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:35:03.531773" 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-25T23:35:03.533048" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:35:03.532790" elapsed="0.000304"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:35:03.533512" 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-25T23:35:03.533244" 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-25T23:35:03.533884" 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-25T23:35:03.534087" 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-25T23:35:03.534252" elapsed="0.000027"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:35:03.533760" elapsed="0.000557"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:35:03.533601" elapsed="0.000751"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:35:03.534399" elapsed="0.000041"/>
</return>
<msg time="2026-04-25T23:35:03.534578" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:35:03.532463" elapsed="0.002140"/>
</kw>
<status status="PASS" start="2026-04-25T23:35:03.532174" elapsed="0.002463"/>
</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-25T23:35:03.534816" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:03.534662" elapsed="0.000212"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:03.532151" elapsed="0.002744"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:35:03.535486" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:35:03.535031" elapsed="0.000482"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:35:03.535562" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:35:03.528401" elapsed="0.007299"/>
</kw>
<msg time="2026-04-25T23:35:03.535813" 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-25T23:35:03.516386" elapsed="0.019520"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:03.547739" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:03.559338" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:03.570958" 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-25T23:35:03.571140" 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-25T23:35:03.571303" 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-25T23:35:03.571650" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:03.571519" elapsed="0.000200"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:35:03.571505" 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-25T23:35:03.571892" 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-25T23:35:03.572046" 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-25T23:35:03.572196" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:35:03.571477" elapsed="0.000769"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:35:03.571376" elapsed="0.000896"/>
</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-25T23:35:03.572403" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:35:03.572477" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:35:03.572586" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:35:03.512321" elapsed="0.060291"/>
</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-25T23:35:03.573823" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:35:03.573572" elapsed="0.000316">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:35:03.573979" 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-25T23:35:03.573250" elapsed="0.000752"/>
</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-25T23:35:03.574301" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:03.574070" elapsed="0.000324"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:35:03.574890" 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-25T23:35:03.574582" elapsed="0.000333"/>
</kw>
<status status="PASS" start="2026-04-25T23:35:03.574418" elapsed="0.000533"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:03.574052" elapsed="0.000920"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:35:03.577226" 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-25T23:35:03.575111" elapsed="0.002141"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:35:03.577303" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:35:03.577456" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:35:03.572937" elapsed="0.004543"/>
</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-25T23:35:03.578639" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:35:03.578413" elapsed="0.000304">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:35:03.578810" 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-25T23:35:03.578094" elapsed="0.000739"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:35:03.579034" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-25T23:35:03.578901" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:03.578883" elapsed="0.000232"/>
</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-25T23:35:03.579246" 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-25T23:35:03.579401" elapsed="0.000019"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:35:03.579464" elapsed="0.000014"/>
</return>
<msg time="2026-04-25T23:35:03.581424" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:35:03.577788" elapsed="0.003662"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:35:03.582806" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:35:03.582546" elapsed="0.000305"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:35:03.583229" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:35:03.582991" elapsed="0.000280"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-25T23:35:03.592377" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:35:03.592514" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:35:03.592609" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:35:03.585327" elapsed="0.007690">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:35:03.583335" elapsed="0.009795">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:35:03.593444" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:03.593174" elapsed="0.000360"/>
</branch>
<status status="FAIL" start="2026-04-25T23:35:03.583317" elapsed="0.010249">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:35:03.594071" elapsed="0.000035"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:35:03.594249" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:35:03.594199" elapsed="0.000106"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:35:03.594176" elapsed="0.000157"/>
</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-25T23:35:03.594560" elapsed="0.000030"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:35:03.594657" elapsed="0.000020"/>
</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-25T23:35:03.581761" elapsed="0.013061">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:35:03.594924" elapsed="0.000023"/>
</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-25T23:35:03.494528" elapsed="0.100533">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:35:03.595412" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:03.595185" elapsed="0.000326"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:35:03.595163" elapsed="0.000379"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:35:03.595585" elapsed="0.000020"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:35:03.486938" elapsed="0.108799">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:03.595973" elapsed="0.000030"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:35:03.478603" elapsed="0.117520">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:35:08.650492" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:35:08.650047" elapsed="0.000487"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:35:08.651444" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:35:08.651169" elapsed="0.000355">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:35:08.651618" 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-25T23:35:08.650761" elapsed="0.000882"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:35:08.652198" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:35:08.651814" elapsed="0.000411"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:35:08.652514" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:35:08.652677" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:35:08.652373" elapsed="0.000344"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:35:08.653107" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:35:08.652861" 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-25T23:35:08.654136" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:35:08.653882" elapsed="0.000299"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:35:08.654600" 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-25T23:35:08.654331" 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-25T23:35:08.654993" elapsed="0.000026"/>
</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-25T23:35:08.655207" 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-25T23:35:08.655439" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:35:08.654839" elapsed="0.000659"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:35:08.654679" elapsed="0.000850"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:35:08.655577" elapsed="0.000034"/>
</return>
<msg time="2026-04-25T23:35:08.655765" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:35:08.653555" elapsed="0.002236"/>
</kw>
<status status="PASS" start="2026-04-25T23:35:08.653237" elapsed="0.002589"/>
</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-25T23:35:08.655987" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:08.655851" elapsed="0.000194"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:08.653212" elapsed="0.002854"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:35:08.656654" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:35:08.656203" elapsed="0.000491"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:35:08.656746" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:35:08.649370" elapsed="0.007503"/>
</kw>
<msg time="2026-04-25T23:35:08.656927" 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-25T23:35:08.637182" elapsed="0.019794"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:08.669039" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:08.680850" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:08.692766" 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-25T23:35:08.692946" 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-25T23:35:08.693107" 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-25T23:35:08.693468" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:08.693321" elapsed="0.000202"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:35:08.693307" 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-25T23:35:08.693671" 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-25T23:35:08.693843" 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-25T23:35:08.693993" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:35:08.693279" elapsed="0.000799"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:35:08.693179" 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-25T23:35:08.694244" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:35:08.694319" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:35:08.694428" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:35:08.633126" elapsed="0.061327"/>
</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-25T23:35:08.695646" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:35:08.695411" elapsed="0.000316">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:35:08.695820" 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-25T23:35:08.695087" elapsed="0.000757"/>
</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-25T23:35:08.696151" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:08.695913" elapsed="0.000302"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:35:08.696753" 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-25T23:35:08.696403" elapsed="0.000379"/>
</kw>
<status status="PASS" start="2026-04-25T23:35:08.696239" elapsed="0.000579"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:08.695895" elapsed="0.000945"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:35:08.699135" 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-25T23:35:08.696979" elapsed="0.002183"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:35:08.699214" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:35:08.699367" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:35:08.694778" elapsed="0.004614"/>
</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-25T23:35:08.700629" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:35:08.700385" elapsed="0.000322">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:35:08.700802" 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-25T23:35:08.700020" elapsed="0.000806"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:35:08.701029" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-25T23:35:08.700895" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:08.700877" elapsed="0.000235"/>
</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-25T23:35:08.701256" elapsed="0.000025"/>
</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-25T23:35:08.701442" elapsed="0.000022"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:35:08.701511" elapsed="0.000016"/>
</return>
<msg time="2026-04-25T23:35:08.703528" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:35:08.699708" elapsed="0.003849"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:35:08.704922" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:35:08.704659" elapsed="0.000309"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:35:08.705342" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:35:08.705106" elapsed="0.000278"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-25T23:35:08.716748" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:35:08.716900" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:35:08.717010" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:35:08.707423" elapsed="0.009966">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:35:08.705470" elapsed="0.012041">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:35:08.717711" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:08.717544" elapsed="0.000233"/>
</branch>
<status status="FAIL" start="2026-04-25T23:35:08.705450" elapsed="0.012350">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:35:08.718226" elapsed="0.000054"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:35:08.718510" elapsed="0.000030"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:35:08.718428" elapsed="0.000172"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:35:08.718392" elapsed="0.000255"/>
</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-25T23:35:08.718964" elapsed="0.000047"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:35:08.719117" elapsed="0.000034"/>
</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-25T23:35:08.703871" elapsed="0.015477">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:35:08.719512" elapsed="0.000044"/>
</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-25T23:35:08.615350" elapsed="0.104427">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:35:08.720385" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:08.719984" elapsed="0.000571"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:35:08.719948" elapsed="0.000662"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:35:08.720714" elapsed="0.000038"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:35:08.606099" elapsed="0.114865">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:08.721353" elapsed="0.000078"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:35:08.596788" elapsed="0.124863">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:35:13.776840" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:35:13.776415" elapsed="0.000458"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:35:13.777634" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:35:13.777384" elapsed="0.000340">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:35:13.777891" 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-25T23:35:13.777051" elapsed="0.000866"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:35:13.778472" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:35:13.778072" elapsed="0.000427"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:35:13.778805" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:35:13.778959" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:35:13.778649" elapsed="0.000336"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:35:13.779413" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:35:13.779165" 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-25T23:35:13.780428" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:35:13.780171" elapsed="0.000302"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:35:13.780907" 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-25T23:35:13.780621" elapsed="0.000312"/>
</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-25T23:35:13.781248" 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-25T23:35:13.781444" 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-25T23:35:13.781605" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:35:13.781125" elapsed="0.000536"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:35:13.780985" elapsed="0.000720"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:35:13.781761" elapsed="0.000034"/>
</return>
<msg time="2026-04-25T23:35:13.781928" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:35:13.779861" elapsed="0.002092"/>
</kw>
<status status="PASS" start="2026-04-25T23:35:13.779535" elapsed="0.002450"/>
</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-25T23:35:13.782143" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:13.782009" elapsed="0.000189"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:13.779512" elapsed="0.002707"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:35:13.782807" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:35:13.782348" elapsed="0.000485"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:35:13.782883" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:35:13.775795" elapsed="0.007225"/>
</kw>
<msg time="2026-04-25T23:35:13.783075" 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-25T23:35:13.763835" elapsed="0.019289"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:13.829256" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:13.841222" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:13.852915" 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-25T23:35:13.853113" 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-25T23:35:13.853282" 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-25T23:35:13.853669" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:13.853532" elapsed="0.000207"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:35:13.853514" 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-25T23:35:13.853896" 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-25T23:35:13.854050" 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-25T23:35:13.854205" elapsed="0.000019"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:35:13.853477" elapsed="0.000780"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:35:13.853364" 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-25T23:35:13.854418" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:35:13.854494" elapsed="0.000017"/>
</return>
<msg time="2026-04-25T23:35:13.854626" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:35:13.759825" elapsed="0.094829"/>
</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-25T23:35:13.856002" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:35:13.855723" elapsed="0.000351">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:35:13.856168" 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-25T23:35:13.855330" elapsed="0.000863"/>
</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-25T23:35:13.856514" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:13.856263" elapsed="0.000308"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:35:13.857060" 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-25T23:35:13.856764" elapsed="0.000322"/>
</kw>
<status status="PASS" start="2026-04-25T23:35:13.856595" elapsed="0.000527"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:13.856245" elapsed="0.000898"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:35:13.859441" 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-25T23:35:13.857280" elapsed="0.002188"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:35:13.859519" elapsed="0.000031"/>
</return>
<msg time="2026-04-25T23:35:13.859674" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:35:13.854990" elapsed="0.004723"/>
</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-25T23:35:13.860895" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:35:13.860649" elapsed="0.000308">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:35:13.861083" 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-25T23:35:13.860320" elapsed="0.000788"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:35:13.861312" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-25T23:35:13.861178" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:13.861159" elapsed="0.000235"/>
</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-25T23:35:13.861528" 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-25T23:35:13.861699" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:35:13.861766" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:35:13.863749" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:35:13.860006" elapsed="0.003769"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:35:13.865133" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:35:13.864879" elapsed="0.000300"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:35:13.865562" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:35:13.865320" 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-25T23:35:13.874720" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:35:13.874855" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:35:13.874977" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:35:13.867645" elapsed="0.007739">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:35:13.865669" elapsed="0.009827">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:35:13.875765" elapsed="0.000031"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:13.875540" elapsed="0.000316"/>
</branch>
<status status="FAIL" start="2026-04-25T23:35:13.865652" elapsed="0.010236">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:35:13.876394" elapsed="0.000035"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:35:13.876576" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:35:13.876524" elapsed="0.000110"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:35:13.876500" elapsed="0.000164"/>
</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-25T23:35:13.876891" elapsed="0.000029"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:35:13.876987" elapsed="0.000021"/>
</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-25T23:35:13.864074" elapsed="0.013060">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:35:13.877238" elapsed="0.000021"/>
</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-25T23:35:13.741634" elapsed="0.135741">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:35:13.877755" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:13.877502" elapsed="0.000355"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:35:13.877478" elapsed="0.000461"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:35:13.877989" elapsed="0.000021"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:35:13.731516" elapsed="0.146609">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:13.878341" elapsed="0.000030"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:35:13.722465" elapsed="0.156026">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:35:18.932303" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:35:18.931893" elapsed="0.000444"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:35:18.933124" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:35:18.932873" elapsed="0.000327">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:35:18.933295" 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-25T23:35:18.932504" elapsed="0.000816"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:35:18.933886" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:35:18.933478" elapsed="0.000437"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:35:18.934210" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:35:18.934369" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:35:18.934067" elapsed="0.000328"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:35:18.934813" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:35:18.934547" 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-25T23:35:18.935827" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:35:18.935548" elapsed="0.000326"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:35:18.936299" 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-25T23:35:18.936025" 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-25T23:35:18.936678" elapsed="0.000038"/>
</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-25T23:35:18.936891" 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-25T23:35:18.937053" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:35:18.936521" elapsed="0.000588"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:35:18.936379" elapsed="0.000760"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:35:18.937186" elapsed="0.000033"/>
</return>
<msg time="2026-04-25T23:35:18.937352" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:35:18.935223" elapsed="0.002154"/>
</kw>
<status status="PASS" start="2026-04-25T23:35:18.934933" elapsed="0.002477"/>
</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-25T23:35:18.937569" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:18.937434" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:18.934911" elapsed="0.002733"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:35:18.938238" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:35:18.937792" elapsed="0.000473"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:35:18.938313" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:35:18.931215" elapsed="0.007221"/>
</kw>
<msg time="2026-04-25T23:35:18.938549" 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-25T23:35:18.919110" elapsed="0.019490"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:18.950568" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:18.962525" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:18.975695" 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-25T23:35:18.975885" 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-25T23:35:18.976050" 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-25T23:35:18.976411" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:18.976278" elapsed="0.000187"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:35:18.976261" 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-25T23:35:18.976637" 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-25T23:35:18.976810" 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-25T23:35:18.976964" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:35:18.976231" elapsed="0.000786"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:35:18.976126" 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-25T23:35:18.977176" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:35:18.977251" elapsed="0.000016"/>
</return>
<msg time="2026-04-25T23:35:18.977366" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:35:18.914889" elapsed="0.062503"/>
</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-25T23:35:18.978623" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:35:18.978374" elapsed="0.000334">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:35:18.978801" 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-25T23:35:18.978039" 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-25T23:35:18.979132" elapsed="0.000068"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:18.978895" elapsed="0.000344"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:35:18.979741" 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-25T23:35:18.979427" elapsed="0.000340"/>
</kw>
<status status="PASS" start="2026-04-25T23:35:18.979263" elapsed="0.000540"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:18.978876" elapsed="0.000949"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:35:18.982070" 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-25T23:35:18.979966" elapsed="0.002131"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:35:18.982149" elapsed="0.000030"/>
</return>
<msg time="2026-04-25T23:35:18.982314" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:35:18.977719" elapsed="0.004624"/>
</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-25T23:35:18.983533" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:35:18.983297" elapsed="0.000300">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:35:18.983704" 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-25T23:35:18.982971" elapsed="0.000759"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:35:18.983935" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-25T23:35:18.983799" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:18.983781" elapsed="0.000237"/>
</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-25T23:35:18.984154" 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-25T23:35:18.984314" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:35:18.984378" elapsed="0.000014"/>
</return>
<msg time="2026-04-25T23:35:18.986430" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:35:18.982639" elapsed="0.003819"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:35:18.987857" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:35:18.987579" elapsed="0.000325"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:35:18.988294" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:35:18.988048" 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-25T23:35:18.997708" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:35:18.997897" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:35:18.998031" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:35:18.990440" elapsed="0.008091">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:35:18.988414" elapsed="0.010232">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:35:18.998915" elapsed="0.000030"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:18.998711" elapsed="0.000293"/>
</branch>
<status status="FAIL" start="2026-04-25T23:35:18.988394" elapsed="0.010643">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:35:18.999546" elapsed="0.000035"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:35:18.999754" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:35:18.999679" elapsed="0.000134"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:35:18.999655" elapsed="0.000188"/>
</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-25T23:35:19.000083" elapsed="0.000031"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:35:19.000183" elapsed="0.000021"/>
</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-25T23:35:18.986775" elapsed="0.013556">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:35:19.000435" elapsed="0.000021"/>
</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-25T23:35:18.897014" elapsed="0.103590">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:35:19.001014" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:19.000776" elapsed="0.000337"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:35:19.000750" elapsed="0.000395"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:35:19.001190" elapsed="0.000020"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:35:18.888200" elapsed="0.113125">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:19.001543" elapsed="0.000030"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:35:18.879168" elapsed="0.122546">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:35:24.054009" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:35:24.053588" elapsed="0.000463"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:35:24.054872" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:35:24.054588" elapsed="0.000369">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:35:24.055052" 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-25T23:35:24.054252" elapsed="0.000825"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:35:24.055622" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:35:24.055234" elapsed="0.000415"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:35:24.055973" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:35:24.056132" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:35:24.055819" elapsed="0.000338"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:35:24.056567" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:35:24.056303" 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-25T23:35:24.057581" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:35:24.057326" elapsed="0.000299"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:35:24.058121" 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-25T23:35:24.057830" elapsed="0.000334"/>
</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-25T23:35:24.058502" 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-25T23:35:24.058718" 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-25T23:35:24.058975" elapsed="0.000024"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:35:24.058373" elapsed="0.000664"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:35:24.058222" elapsed="0.000848"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:35:24.059120" elapsed="0.000035"/>
</return>
<msg time="2026-04-25T23:35:24.059293" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:35:24.057015" elapsed="0.002302"/>
</kw>
<status status="PASS" start="2026-04-25T23:35:24.056709" elapsed="0.002642"/>
</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-25T23:35:24.059514" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:24.059377" elapsed="0.000195"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:24.056666" elapsed="0.002926"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:35:24.060201" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:35:24.059741" elapsed="0.000487"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:35:24.060278" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:35:24.052980" elapsed="0.007422"/>
</kw>
<msg time="2026-04-25T23:35:24.060456" 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-25T23:35:24.040606" elapsed="0.019898"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:24.074873" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:24.086677" elapsed="0.000043"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:24.098470" 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-25T23:35:24.098657" 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-25T23:35:24.098847" 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-25T23:35:24.099349" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:24.099215" elapsed="0.000188"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:35:24.099201" elapsed="0.000225"/>
</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-25T23:35:24.099553" 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-25T23:35:24.099719" 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-25T23:35:24.099874" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:35:24.099174" elapsed="0.000795"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:35:24.099073" elapsed="0.000923"/>
</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-25T23:35:24.100133" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:35:24.100208" elapsed="0.000016"/>
</return>
<msg time="2026-04-25T23:35:24.100318" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:35:24.036420" elapsed="0.063923"/>
</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-25T23:35:24.101539" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:35:24.101304" elapsed="0.000297">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:35:24.101709" 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-25T23:35:24.100980" elapsed="0.000759"/>
</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-25T23:35:24.102044" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:24.101810" elapsed="0.000290"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:35:24.102585" 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-25T23:35:24.102299" elapsed="0.000311"/>
</kw>
<status status="PASS" start="2026-04-25T23:35:24.102135" elapsed="0.000509"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:24.101792" elapsed="0.000873"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:35:24.104939" 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-25T23:35:24.102836" elapsed="0.002129"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:35:24.105016" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:35:24.105169" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:35:24.100652" elapsed="0.004541"/>
</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-25T23:35:24.106395" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:35:24.106158" elapsed="0.000298">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:35:24.106548" 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-25T23:35:24.105811" elapsed="0.000761"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:35:24.106795" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-25T23:35:24.106641" elapsed="0.000213"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:24.106623" elapsed="0.000255"/>
</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-25T23:35:24.107012" 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-25T23:35:24.107169" elapsed="0.000019"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:35:24.107231" elapsed="0.000015"/>
</return>
<msg time="2026-04-25T23:35:24.109816" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:35:24.105484" elapsed="0.004370"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:35:24.111798" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:35:24.111433" elapsed="0.000427"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:35:24.112389" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:35:24.112056" elapsed="0.000394"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-04-25T23:35:24.123313" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:35:24.123462" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:35:24.123576" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:35:24.115534" elapsed="0.008445">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:35:24.112540" elapsed="0.011533">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:35:24.124259" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:24.124108" elapsed="0.000217"/>
</branch>
<status status="FAIL" start="2026-04-25T23:35:24.112514" elapsed="0.011839">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:35:24.124757" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:35:24.124903" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:35:24.124858" elapsed="0.000088"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:35:24.124841" elapsed="0.000126"/>
</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-25T23:35:24.125099" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:35:24.125167" elapsed="0.000015"/>
</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-25T23:35:24.110293" elapsed="0.014979">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:35:24.125345" elapsed="0.000015"/>
</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-25T23:35:24.018999" elapsed="0.106440">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:35:24.125712" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:24.125531" elapsed="0.000252"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:35:24.125515" elapsed="0.000291"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:35:24.125838" elapsed="0.000015"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:35:24.010353" elapsed="0.115581">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:24.126103" elapsed="0.000055"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:35:24.002649" elapsed="0.123599">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:35:29.177744" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:35:29.177301" elapsed="0.000478"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:35:29.178516" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:35:29.178264" elapsed="0.000327">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:35:29.178766" 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-25T23:35:29.177942" elapsed="0.000850"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:35:29.179334" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:35:29.178948" elapsed="0.000414"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:35:29.179655" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:35:29.179824" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:35:29.179515" elapsed="0.000334"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:35:29.180247" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:35:29.179994" 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-25T23:35:29.181236" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:35:29.180982" elapsed="0.000306"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:35:29.181758" 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-25T23:35:29.181473" 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-25T23:35:29.182102" 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-25T23:35:29.182293" 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-25T23:35:29.182454" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:35:29.181980" elapsed="0.000529"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:35:29.181837" elapsed="0.000702"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:35:29.182585" elapsed="0.000034"/>
</return>
<msg time="2026-04-25T23:35:29.182767" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:35:29.180656" elapsed="0.002137"/>
</kw>
<status status="PASS" start="2026-04-25T23:35:29.180370" elapsed="0.002455"/>
</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-25T23:35:29.182981" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:29.182849" elapsed="0.000185"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:29.180347" elapsed="0.002708"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:35:29.183629" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:35:29.183182" elapsed="0.000473"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:35:29.183720" elapsed="0.000036"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:35:29.176690" elapsed="0.007161"/>
</kw>
<msg time="2026-04-25T23:35:29.183905" 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-25T23:35:29.164531" elapsed="0.019422"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:29.195998" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:29.207647" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:29.219395" 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-25T23:35:29.219588" 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-25T23:35:29.219767" 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-25T23:35:29.220119" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:29.219987" elapsed="0.000186"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:35:29.219973" elapsed="0.000223"/>
</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-25T23:35:29.220323" elapsed="0.000019"/>
</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-25T23:35:29.220474" 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-25T23:35:29.220624" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:35:29.219945" elapsed="0.000730"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:35:29.219845" elapsed="0.000872"/>
</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-25T23:35:29.220853" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:35:29.220928" elapsed="0.000016"/>
</return>
<msg time="2026-04-25T23:35:29.221039" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:35:29.160454" elapsed="0.060610"/>
</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-25T23:35:29.222316" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:35:29.222075" elapsed="0.000307">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:35:29.222481" 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-25T23:35:29.221704" 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-25T23:35:29.222823" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:29.222573" elapsed="0.000305"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:35:29.223363" 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-25T23:35:29.223063" elapsed="0.000326"/>
</kw>
<status status="PASS" start="2026-04-25T23:35:29.222902" elapsed="0.000561"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:29.222555" elapsed="0.000930"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:35:29.225732" 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-25T23:35:29.223633" elapsed="0.002127"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:35:29.225811" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:35:29.225988" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:35:29.221377" elapsed="0.004636"/>
</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-25T23:35:29.227178" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:35:29.226951" elapsed="0.000288">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:35:29.227375" 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-25T23:35:29.226610" elapsed="0.000790"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:35:29.227602" elapsed="0.000027"/>
</return>
<status status="PASS" start="2026-04-25T23:35:29.227468" elapsed="0.000193"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:29.227451" elapsed="0.000237"/>
</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-25T23:35:29.227836" 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-25T23:35:29.227996" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:35:29.228060" elapsed="0.000014"/>
</return>
<msg time="2026-04-25T23:35:29.230076" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:35:29.226304" elapsed="0.003798"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:35:29.231453" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:35:29.231208" elapsed="0.000289"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:35:29.231895" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:35:29.231637" 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-25T23:35:29.240843" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:35:29.240982" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:35:29.241078" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:35:29.233978" elapsed="0.007461">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:35:29.232003" elapsed="0.009517">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:35:29.241708" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:29.241552" elapsed="0.000222"/>
</branch>
<status status="FAIL" start="2026-04-25T23:35:29.231985" elapsed="0.009812">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:35:29.242185" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:35:29.242316" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:35:29.242280" elapsed="0.000077"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:35:29.242263" 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-25T23:35:29.242508" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:35:29.242578" elapsed="0.000014"/>
</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-25T23:35:29.230398" elapsed="0.012284">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:35:29.242773" elapsed="0.000016"/>
</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-25T23:35:29.143038" elapsed="0.099831">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:35:29.243133" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:29.242966" elapsed="0.000245"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:35:29.242950" elapsed="0.000320"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:35:29.243306" elapsed="0.000014"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:35:29.135942" elapsed="0.107460">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:29.243558" elapsed="0.000021"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:35:29.126956" elapsed="0.116707">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Check_Restored_Data">
<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-25T23:35:34.292955" level="INFO">${file_path_stream} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.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-25T23:35:34.292529" elapsed="0.000460"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-04-25T23:35:34.293764" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.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-25T23:35:34.293478" elapsed="0.000367">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars.chromium/location.uri' does not exist.</status>
</kw>
<msg time="2026-04-25T23:35:34.293939" 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-25T23:35:34.293154" elapsed="0.000809"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:35:34.294498" level="INFO">${file_path} = /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/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-25T23:35:34.294119" elapsed="0.000406"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-04-25T23:35:34.294834" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri"&gt;/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-04-25T23:35:34.295106" level="INFO">${template} = /rests/data/car:cars
</msg>
<var>${template}</var>
<arg>${file_path}</arg>
<doc>Returns the contents of a specified file.</doc>
<status status="PASS" start="2026-04-25T23:35:34.294674" elapsed="0.000458"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:35:34.295523" level="INFO">/rests/data/car:cars
</msg>
<arg>${template}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:35:34.295279" 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-25T23:35:34.296523" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:35:34.296272" elapsed="0.000296"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-04-25T23:35:34.297001" 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-25T23:35:34.296731" 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-25T23:35:34.297349" 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-25T23:35:34.297543" 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-25T23:35:34.297722" elapsed="0.000022"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-04-25T23:35:34.297226" elapsed="0.000555"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-04-25T23:35:34.297081" elapsed="0.000731"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-04-25T23:35:34.297859" elapsed="0.000033"/>
</return>
<msg time="2026-04-25T23:35:34.298025" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-04-25T23:35:34.295965" elapsed="0.002085"/>
</kw>
<status status="PASS" start="2026-04-25T23:35:34.295644" elapsed="0.002438"/>
</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-25T23:35:34.298241" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:34.298107" elapsed="0.000190"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:34.295620" elapsed="0.002698"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:35:34.298910" level="INFO">${final_text} = /rests/data/car:cars</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-25T23:35:34.298447" elapsed="0.000489"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-04-25T23:35:34.298984" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="PASS" start="2026-04-25T23:35:34.291921" elapsed="0.007184"/>
</kw>
<msg time="2026-04-25T23:35:34.299225" 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-25T23:35:34.279877" elapsed="0.019397"/>
</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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:34.312528" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:34.324301" 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-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name} exists. If yes read and Log contents of file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars.chromium/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/${file_name}.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:34.335967" 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-25T23:35:34.336176" 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-25T23:35:34.336347" 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-25T23:35:34.336759" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:34.336604" elapsed="0.000210"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:35:34.336586" 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-25T23:35:34.336970" 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-25T23:35:34.337123" 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-25T23:35:34.337276" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-04-25T23:35:34.336549" elapsed="0.000779"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-04-25T23:35:34.336430" 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-25T23:35:34.337491" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-04-25T23:35:34.337569" elapsed="0.000016"/>
</return>
<msg time="2026-04-25T23:35:34.337723" level="INFO">${uri} = /rests/data/car:cars</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 1000 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-25T23:35:34.275732" elapsed="0.062019"/>
</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-25T23:35:34.339169" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:35:34.338865" elapsed="0.000381">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-04-25T23:35:34.339338" 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-25T23:35:34.338465" elapsed="0.000898"/>
</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-25T23:35:34.339681" elapsed="0.000100"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:34.339432" elapsed="0.000386"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:35:34.340303" 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-25T23:35:34.340009" elapsed="0.000320"/>
</kw>
<status status="PASS" start="2026-04-25T23:35:34.339842" elapsed="0.000521"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:34.339414" elapsed="0.000971"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:35:34.342619" 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-25T23:35:34.340523" elapsed="0.002123"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-04-25T23:35:34.342712" elapsed="0.000031"/>
</return>
<msg time="2026-04-25T23:35:34.342870" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/jmespath.expr if the file exists and
returns the JMES path. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:35:34.338122" elapsed="0.004773"/>
</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-25T23:35:34.344112" level="FAIL">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/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-25T23:35:34.343881" elapsed="0.000293">File '/w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/variables/carpeople/libtest/cars/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-04-25T23:35:34.344266" 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-25T23:35:34.343539" elapsed="0.000751"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-04-25T23:35:34.344491" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-04-25T23:35:34.344358" elapsed="0.000192"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:34.344340" elapsed="0.000233"/>
</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-25T23:35:34.344728" 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-25T23:35:34.344889" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-04-25T23:35:34.344953" elapsed="0.000014"/>
</return>
<msg time="2026-04-25T23:35:34.346927" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/controller-csit-1node-akka1-all-chromium/test/csit/suites/controller/akka_upgrade/../../../variables/carpeople/libtest/cars/volatiles.list if the file exists and
returns the Volatiles List. Empty string is returned otherwise.</doc>
<status status="PASS" start="2026-04-25T23:35:34.343228" elapsed="0.003725"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:35:34.348340" level="INFO">/rests/data/car:cars</msg>
<arg>${uri}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:35:34.348084" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:35:34.348786" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-04-25T23:35:34.348528" 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-25T23:35:34.358573" level="INFO">GET Request : url=http://10.30.171.166:8181/rests/data/car:cars 
 path_url=/rests/data/car:cars 
 headers={'User-Agent': 'python-requests/2.33.1', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'JSESSIONID=node0r9adghnyh0u8s0tjoxykoqb71.node0', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-04-25T23:35:34.358741" level="INFO">GET Response : url=http://10.30.171.166:8181/rests/data/car:cars 
 status=409, reason=Conflict 
 headers={'Content-Type': 'application/yang-data+json', 'Content-Length': '242'} 
 body={
  "errors": {
    "error": [
      {
        "error-tag": "data-missing",
        "error-message": "Request could not be completed because the relevant data model content does not exist",
        "error-type": "protocol"
      }
    ]
  }
} 
 </msg>
<msg time="2026-04-25T23:35:34.358854" level="FAIL">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<var>${response}</var>
<arg>${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-25T23:35:34.350847" elapsed="0.008412">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<status status="FAIL" start="2026-04-25T23:35:34.348895" elapsed="0.010446">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:35:34.359515" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:34.359372" elapsed="0.000208"/>
</branch>
<status status="FAIL" start="2026-04-25T23:35:34.348877" elapsed="0.010726">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:35:34.359985" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-04-25T23:35:34.360116" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:35:34.360079" elapsed="0.000077"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:35:34.360062" 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-25T23:35:34.360347" elapsed="0.000022"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-04-25T23:35:34.360418" elapsed="0.000015"/>
</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-25T23:35:34.347270" elapsed="0.013254">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:35:34.360598" elapsed="0.000015"/>
</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-25T23:35:34.258293" elapsed="0.102429">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:35:34.360982" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:34.360817" elapsed="0.000236"/>
</branch>
<status status="NOT RUN" start="2026-04-25T23:35:34.360800" elapsed="0.000275"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-04-25T23:35:34.361107" elapsed="0.000014"/>
</return>
<var>${data_after}</var>
<arg>folder=${CAR_VAR_DIR}</arg>
<arg>verify=False</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-25T23:35:34.251119" elapsed="0.110083">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<kw name="Should Be Equal" owner="BuiltIn">
<arg>${data_before}</arg>
<arg>${data_after}</arg>
<doc>Fails if the given objects are unequal.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:34.361358" elapsed="0.000021"/>
</kw>
<doc>Get car data from config datastore and check it is equal to the stored data.
This has to be a separate keyword, as it is run under WUKS.</doc>
<status status="FAIL" start="2026-04-25T23:35:34.244335" elapsed="0.117128">HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</kw>
<msg time="2026-04-25T23:35:34.361546" level="FAIL">Keyword 'Check_Restored_Data' failed after retrying for 3 minutes. The last error was: HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</msg>
<arg>180s</arg>
<arg>5s</arg>
<arg>Check_Restored_Data</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-04-25T23:32:29.620029" elapsed="184.741607">Keyword 'Check_Restored_Data' failed after retrying for 3 minutes. The last error was: HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:35:34.362883" elapsed="0.000025"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:34.362505" elapsed="0.000438"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:34.362488" 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-25T23:35:34.363099" elapsed="0.000332"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:35:34.368347" 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-25T23:35:34.367935" elapsed="0.000439"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-25T23:35:34.368588" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:35:34.368447" elapsed="0.000180"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:34.368430" elapsed="0.000218"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:35:34.369089" 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-25T23:35:34.368797" elapsed="0.000318"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-25T23:35:34.369521" level="INFO">${reference} = controller_akka1_txt_Verify_Data_Is_Restored</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-25T23:35:34.369258" elapsed="0.000288"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-25T23:35:34.369883" level="INFO">${reference} = controller_akka1_txt_verify_data_is_restored</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-25T23:35:34.369708" elapsed="0.000200"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:35:34.370386" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_verify_data_is_restored"
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-25T23:35:34.370049" elapsed="0.000363"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:35:34.370919" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_verify_data_is_restored&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-25T23:35:34.370589" elapsed="0.000357"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-25T23:35:34.371534" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_verify_data_is_restored"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_verify_data_is_restored&amp;order=bug_status"

Keyword 'Check_Restored_Data' failed after retrying for 3 minutes. The last error was: HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</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-25T23:35:34.371087" elapsed="0.000497"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:35:34.372032" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_verify_data_is_restored"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_verify_data_is_restored&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-25T23:35:34.371740" elapsed="0.000338"/>
</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-25T23:35:34.367629" elapsed="0.004503"/>
</kw>
<status status="PASS" start="2026-04-25T23:35:34.362302" elapsed="0.009879"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-25T23:35:34.361959" elapsed="0.010262"/>
</kw>
<doc>Wait until data check succeeds (there may be temporary 503).</doc>
<tag>1node</tag>
<tag>carpeople</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-25T23:32:28.877372" elapsed="185.494886">... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_verify_data_is_restored"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_verify_data_is_restored&amp;order=bug_status"

Keyword 'Check_Restored_Data' failed after retrying for 3 minutes. The last error was: HTTPError: 409 Client Error: Conflict for url: http://10.30.171.166:8181/rests/data/car:cars</status>
</test>
<test id="s1-t13" name="Archive_Older_Karaf_Log" line="175">
<kw name="Setup_Test_With_Logging_And_Without_Fast_Failing" owner="SetupUtils" type="SETUP">
<kw name="Run_Even_When_Failing_Fast" owner="FailFast">
<kw name="No Operation" owner="BuiltIn">
<doc>Does absolutely nothing.</doc>
<status status="PASS" start="2026-04-25T23:35:34.375560" elapsed="0.000222"/>
</kw>
<doc>This is just a more readable 'None' to override [Setup].</doc>
<status status="PASS" start="2026-04-25T23:35:34.375309" 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-25T23:35:34.376792" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:35:34.376663" elapsed="0.000174"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:34.376645" 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-25T23:35:34.381502" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:35:34.381398" elapsed="0.000148"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:34.381381" elapsed="0.000187"/>
</if>
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-04-25T23:35:34.382521" level="INFO">${return_list_reference} = [1]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-04-25T23:35:34.382151" elapsed="0.000396"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-04-25T23:35:34.383001" level="INFO">${return_list_copy} = [1]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Returns a list containing given items.</doc>
<status status="PASS" start="2026-04-25T23:35:34.382708" elapsed="0.000319"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-04-25T23:35:34.383070" elapsed="0.000029"/>
</return>
<msg time="2026-04-25T23:35:34.383222" level="INFO">${index_list} = [1]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-04-25T23:35:34.381794" elapsed="0.001452"/>
</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-25T23:35:34.388717" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:35:34.388594" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:34.388576" 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-25T23:35:34.389840" elapsed="0.000015"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:35:34.389736" elapsed="0.000150"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:34.389717" elapsed="0.000190"/>
</if>
<kw name="Get From Dictionary" owner="Collections">
<msg time="2026-04-25T23:35:34.390328" level="INFO">${karaf_connection_index} = 26</msg>
<var>${karaf_connection_index}</var>
<arg>${connection_index_dict}</arg>
<arg>${member_index}</arg>
<doc>Returns a value from the given ``dictionary`` based on the given ``key``.</doc>
<status status="PASS" start="2026-04-25T23:35:34.390038" elapsed="0.000315"/>
</kw>
<kw name="Switch Connection" owner="SSHLibrary">
<msg time="2026-04-25T23:35:34.390718" level="INFO">${current_connection_index} = 7</msg>
<var>${current_connection_index}</var>
<arg>${karaf_connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:35:34.390499" elapsed="0.000246"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Write" owner="SSHLibrary">
<msg time="2026-04-25T23:35:34.483149" 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 "- "a "k "k "a "1 ". "[78Ct "[A[78Cx</msg>
<arg>${command}</arg>
<doc>Writes the given ``text`` on the remote machine and appends a newline.</doc>
<status status="PASS" start="2026-04-25T23:35:34.391252" elapsed="0.092020"/>
</kw>
<msg time="2026-04-25T23:35:34.483377" level="INFO">${status_write} = PASS</msg>
<msg time="2026-04-25T23:35:34.483422" 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-25T23:35:34.390926" elapsed="0.092533"/>
</kw>
<kw name="Run Keyword And Ignore Error" owner="BuiltIn">
<kw name="Read Until Regexp" owner="SSHLibrary">
<msg time="2026-04-25T23:35:34.516424" level="INFO">"t ". "A "r "c "h "i "v "e "_ "O "l "d "e "r "_ "K "a "r "a "f "_ "L "o "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-25T23:35:34.484007" elapsed="0.032605"/>
</kw>
<msg time="2026-04-25T23:35:34.516808" level="INFO">${status_wait} = PASS</msg>
<msg time="2026-04-25T23:35:34.516877" level="INFO">${message_wait} =  "t ". "A "r "c "h "i "v "e "_ "O "l "d "e "r "_ "K "a "r "a "f "_ "L "o "g "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                 ...</msg>
<var>${status_wait}</var>
<var>${message_wait}</var>
<arg>SSHLibrary.Read_Until_Regexp</arg>
<arg>${KARAF_PROMPT}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:35:34.483635" elapsed="0.033296"/>
</kw>
<if>
<branch type="IF" condition="'${status_write}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to send the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:34.517315" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:34.517056" elapsed="0.000316"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:34.517022" elapsed="0.000376"/>
</if>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:35:34.517849" level="INFO"> "t ". "A "r "c "h "i "v "e "_ "O "l "d "e "r "_ "K "a "r "a "f "_ "L "o "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-25T23:35:34.517532" elapsed="0.000380"/>
</kw>
<if>
<branch type="IF" condition="'${status_wait}' != 'PASS'">
<kw name="Fail" owner="BuiltIn">
<arg>Failed to see prompt after sending the command: ${command}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:34.518185" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:34.517980" elapsed="0.000260"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:34.517961" elapsed="0.000302"/>
</if>
<return>
<value>${message_wait}</value>
<status status="PASS" start="2026-04-25T23:35:34.518299" elapsed="0.000033"/>
</return>
<kw name="Run Keyword If" owner="BuiltIn" type="TEARDOWN">
<kw name="Restore_Current_Ssh_Connection_From_Index" owner="SSHKeywords">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Switch Connection" owner="SSHLibrary">
<arg>${connection_index}</arg>
<doc>Switches the active connection by index or alias.</doc>
<status status="PASS" start="2026-04-25T23:35:34.520670" elapsed="0.000243"/>
</kw>
<msg time="2026-04-25T23:35:34.520973" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${connection_index} is not None</arg>
<arg>SSHLibrary.Switch Connection</arg>
<arg>${connection_index}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-04-25T23:35:34.519629" elapsed="0.001511"/>
</kw>
<kw name="Open Connection" owner="SSHLibrary">
<arg>127.0.0.1</arg>
<doc>Opens a new SSH connection to the given ``host`` and ``port``.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:34.521430" elapsed="0.000048"/>
</kw>
<kw name="Close Connection" owner="SSHLibrary">
<doc>Closes the current connection.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:34.521743" elapsed="0.000047"/>
</kw>
<arg>${current_connection_index}</arg>
<doc>Restore active SSH connection in SSHLibrary to given index.</doc>
<status status="PASS" start="2026-04-25T23:35:34.519116" elapsed="0.002817"/>
</kw>
<arg>'${IS_KARAF_APPL}' == 'True'</arg>
<arg>SSHKeywords.Restore_Current_Ssh_Connection_From_Index</arg>
<arg>${current_connection_index}</arg>
<doc>Runs the given keyword with the given arguments, if ``condition`` is true.</doc>
<status status="PASS" start="2026-04-25T23:35:34.518575" elapsed="0.003408"/>
</kw>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Send command to karaf without affecting current SSH connection. Read, log and return response.</doc>
<status status="PASS" start="2026-04-25T23:35:34.389425" elapsed="0.132655"/>
</kw>
<msg time="2026-04-25T23:35:34.522174" level="INFO">${status} = PASS</msg>
<msg time="2026-04-25T23:35:34.522218" level="INFO">${message} =  "t ". "A "r "c "h "i "v "e "_ "O "l "d "e "r "_ "K "a "r "a "f "_ "L "o "g "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                 ...</msg>
<var>${status}</var>
<var>${message}</var>
<arg>Execute_Controller_Karaf_Command_On_Background</arg>
<arg>${command}</arg>
<arg>${member_index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:35:34.388922" elapsed="0.133334"/>
</kw>
<if>
<branch type="IF" condition="'${status}' == 'PASS'">
<return>
<value>${message}</value>
<status status="PASS" start="2026-04-25T23:35:34.522443" elapsed="0.000026"/>
</return>
<status status="PASS" start="2026-04-25T23:35:34.522333" elapsed="0.000169"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:34.522314" 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-25T23:35:34.522948" 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-25T23:35:34.523286" elapsed="0.000024"/>
</kw>
<return>
<value>${message}</value>
<status status="NOT RUN" start="2026-04-25T23:35:34.523358" 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-25T23:35:34.388257" elapsed="0.135213"/>
</kw>
<msg time="2026-04-25T23:35:34.523566" level="INFO">${status} = PASS</msg>
<msg time="2026-04-25T23:35:34.523663" level="INFO">${output} =  "t ". "A "r "c "h "i "v "e "_ "O "l "d "e "r "_ "K "a "r "a "f "_ "L "o "g "[K"
[?1l&gt;[?2004l[?1h=[90m~[0m                                 ...</msg>
<var>${status}</var>
<var>${output}</var>
<arg>Execute_Controller_Karaf_Command_With_Retry_On_Background</arg>
<arg>log:log "ROBOT MESSAGE: ${message}"</arg>
<arg>member_index=${index}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible error.</doc>
<status status="PASS" start="2026-04-25T23:35:34.383630" elapsed="0.140096"/>
</kw>
<if>
<branch type="IF" condition="not ${tolerate_failure} and &quot;${status}&quot; != &quot;PASS&quot;">
<kw name="Fail" owner="BuiltIn">
<arg>${output}</arg>
<doc>Fails the test with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:34.524075" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:34.523806" elapsed="0.000328"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:34.523788" elapsed="0.000369"/>
</if>
<var name="${index}">1</var>
<status status="PASS" start="2026-04-25T23:35:34.383500" elapsed="0.140681"/>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="PASS" start="2026-04-25T23:35:34.383298" elapsed="0.140916"/>
</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-25T23:35:34.381048" elapsed="0.143224"/>
</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-25T23:35:34.376381" elapsed="0.147948"/>
</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-25T23:35:34.375975" elapsed="0.148400"/>
</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-25T23:35:34.373250" elapsed="0.151180"/>
</kw>
<kw name="Execute_Command_Should_Pass" owner="SSHKeywords">
<msg time="2026-04-25T23:35:34.528992" level="FAIL">Variable '${alternative_bundlefolder}' not found. Did you mean:
    ${ALTERNATIVE_BUNDLEFOLDER_PARENT}</msg>
<arg>xz -9evv ${alternative_bundlefolder}/data/log/karaf.log</arg>
<doc>A wrapper for Execute_Command_Passes with return_success_only=False
Also, log_on_success defaults to True (but is customizable, unlike return_success_only)..</doc>
<status status="FAIL" start="2026-04-25T23:35:34.524627" elapsed="0.004407">Variable '${alternative_bundlefolder}' not found. Did you mean:
    ${ALTERNATIVE_BUNDLEFOLDER_PARENT}</status>
</kw>
<kw name="Get File" owner="SSHLibrary">
<arg>${alternative_bundlefolder}/data/log/karaf.log.xz</arg>
<arg>older.karaf.log.xz</arg>
<doc>Downloads file(s) from the remote machine to the local machine.</doc>
<status status="NOT RUN" start="2026-04-25T23:35:34.529199" elapsed="0.000023"/>
</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-25T23:35:34.530442" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-04-25T23:35:34.530080" elapsed="0.000423"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:34.530063" elapsed="0.000464"/>
</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-25T23:35:34.530662" elapsed="0.000336"/>
</kw>
<kw name="Report_Failure_And_Point_To_Linked_Bugs" owner="Utils">
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:35:34.535919" 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-25T23:35:34.535392" elapsed="0.000554"/>
</kw>
<if>
<branch type="IF" condition="('${TEST_STATUS}' != 'FAIL') or ${test_skipped}">
<return>
<status status="NOT RUN" start="2026-04-25T23:35:34.536181" elapsed="0.000016"/>
</return>
<status status="NOT RUN" start="2026-04-25T23:35:34.536035" elapsed="0.000188"/>
</branch>
<status status="PASS" start="2026-04-25T23:35:34.536003" elapsed="0.000241"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-04-25T23:35:34.536679" 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-25T23:35:34.536379" elapsed="0.000344"/>
</kw>
<kw name="Replace String Using Regexp" owner="String">
<msg time="2026-04-25T23:35:34.537139" level="INFO">${reference} = controller_akka1_txt_Archive_Older_Karaf_Log</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-25T23:35:34.536871" elapsed="0.000294"/>
</kw>
<kw name="Convert To Lower Case" owner="String">
<msg time="2026-04-25T23:35:34.537487" level="INFO">${reference} = controller_akka1_txt_archive_older_karaf_log</msg>
<var>${reference}</var>
<arg>${reference}</arg>
<doc>Converts string to lower case.</doc>
<status status="PASS" start="2026-04-25T23:35:34.537313" elapsed="0.000200"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:35:34.538017" level="INFO">${msg} = ... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_archive_older_karaf_log"
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-25T23:35:34.537656" elapsed="0.000401"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-04-25T23:35:34.538514" level="INFO">${bugs} = "https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_archive_older_karaf_log&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-25T23:35:34.538205" elapsed="0.000336"/>
</kw>
<kw name="Set Test Message" owner="BuiltIn">
<msg time="2026-04-25T23:35:34.539160" level="INFO">Set test message to:
... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_archive_older_karaf_log"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_archive_older_karaf_log&amp;order=bug_status"

Variable '${alternative_bundlefolder}' not found. Did you mean:
    ${ALTERNATIVE_BUNDLEFOLDER_PARENT}</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-25T23:35:34.538720" elapsed="0.000526"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-04-25T23:35:34.539706" level="INFO">... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_archive_older_karaf_log"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_archive_older_karaf_log&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-25T23:35:34.539393" elapsed="0.000363"/>
</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-25T23:35:34.535099" elapsed="0.004712"/>
</kw>
<status status="PASS" start="2026-04-25T23:35:34.529871" elapsed="0.009990"/>
</kw>
<doc>Test case teardown. Show linked bugs in case of failure.</doc>
<status status="PASS" start="2026-04-25T23:35:34.529508" elapsed="0.010394"/>
</kw>
<doc>Only original location benefits from automatic karaf.log archivation.</doc>
<tag>1node</tag>
<tag>carpeople</tag>
<tag>critical</tag>
<status status="FAIL" start="2026-04-25T23:35:34.372702" elapsed="0.167237">... click for list of related bugs or create a new one if needed (with the
"controller_akka1_txt_archive_older_karaf_log"
reference somewhere inside)
"https://bugs.opendaylight.org/buglist.cgi?f1=cf_external_ref&amp;o1=substring&amp;v1=controller_akka1_txt_archive_older_karaf_log&amp;order=bug_status"

Variable '${alternative_bundlefolder}' not found. Did you mean:
    ${ALTERNATIVE_BUNDLEFOLDER_PARENT}</status>
</test>
<doc>Suite for testing upgrading persisted data from earlier release.

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 suite kills the running (newer) ODL at its default location.
It then installs (configurable) older ODL to an alternative location,
pushes large amount of car data, verifies and kills the older ODL.
The journal and snapshot files are transferred to the default location
and the newer ODL is started.
Then it verifies the config data is still present and matches what was seen before.

In principle, the suite should also work if "newer" ODL is in fact older.
The limiting factor is featuresBoot, the value should be applicable to both ODL versions.

Note that in order to create traffic large enough for snapshots to be created,
this suite also actis as a stress test for Restconf.
But as that is not a primary focus of this suite,
data seen on newer ODL is only compared to what was seen on the older ODL
(stored in ${data_before} suite variable).

As using Robotframework would be both too slow and too memory consuming,
this suite uses a specialized Python utility for pushing the data locally on ODL_SYSTEM.
The utility filename is configurable, as there may be changes in PATCH behavior in future.

This suite uses relatively new support for PATCH http method.
It repetitively replaces a segment of cars with moving IDs,
so that there is a lot of data in journal (both write and delete),
but the overall size of data stored remains limited.

This is 1-node suite, but it still uses ClusterManagement.Check_Cluster_Is_In_Sync
in order to detect the same sync condition as 3-node suite would do.
Jolokia feature is required for that.

Minimal set of features to be installed: odl-restconf, odl-jolokia, odl-clustering-test-app.</doc>
<status status="FAIL" start="2026-04-25T23:31:38.252615" elapsed="236.287941"/>
</suite>
<statistics>
<total>
<stat pass="3" fail="10" skip="0">All Tests</stat>
</total>
<tag>
<stat pass="3" fail="10" skip="0">1node</stat>
<stat pass="3" fail="10" skip="0">carpeople</stat>
<stat pass="2" fail="9" skip="0">critical</stat>
<stat pass="0" fail="1" skip="0">https://bugs.opendaylight.org/show_bug.cgi?id=5909</stat>
</tag>
<suite>
<stat name="controller-akka1.txt" id="s1" pass="3" fail="10" skip="0">controller-akka1.txt</stat>
</suite>
</statistics>
<errors>
</errors>
</robot>
