<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.5 (Python 3.11.10 on linux)" generated="2026-10-20T23:11:57.422810" rpa="false" schemaversion="5">
<suite id="s1" name="openflowplugin-clustering-perf-bulkomatic.txt" source="/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/suites/openflowplugin/Performance_Bulkomatic/100K_Flows_100DPN_3Node_Cluster_Perf_Test.robot">
<kw name="ClusterManagement_Setup" owner="ClusterManagement" type="SETUP">
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.077369" 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-10-20T23:11:58.075892" elapsed="0.001534"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-10-20T23:11:58.077635" elapsed="0.000020"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:11:58.077534" elapsed="0.000151"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:58.077507" elapsed="0.000202"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.078249" level="INFO">${ClusterManagement__has_setup_run} = True</msg>
<arg>\${ClusterManagement__has_setup_run}</arg>
<arg>True</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:11:58.077898" elapsed="0.000398"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.078797" level="INFO">${cluster_size} = 3</msg>
<var>${cluster_size}</var>
<arg>\${NUM_ODL_SYSTEM}</arg>
<arg>1</arg>
<doc>Returns variable value or `default` if the variable does not exist.</doc>
<status status="PASS" start="2026-10-20T23:11:58.078487" elapsed="0.000337"/>
</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-10-20T23:11:58.079477" elapsed="0.000274"/>
</kw>
<msg time="2026-10-20T23:11:58.079851" level="INFO">${status} = PASS</msg>
<msg time="2026-10-20T23:11:58.079898" level="INFO">${possibly_int_of_members} = 3</msg>
<var>${status}</var>
<var>${possibly_int_of_members}</var>
<arg>BuiltIn.Convert_To_Integer</arg>
<arg>${cluster_size}</arg>
<doc>Runs the given keyword with the given arguments and ignores possible errorw.</doc>
<status status="PASS" start="2026-10-20T23:11:58.079013" elapsed="0.000910"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.080629" level="INFO">${int_of_members} = 3</msg>
<var>${int_of_members}</var>
<arg>'${status}' != 'PASS'</arg>
<arg>${1}</arg>
<arg>${possibly_int_of_members}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:11:58.080127" elapsed="0.000529"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.081595" level="INFO">@{member_index_list} = [ ]</msg>
<var>@{member_index_list}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:11:58.081316" elapsed="0.000308"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.082054" level="INFO">@{session_list} = [ ]</msg>
<var>@{session_list}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:11:58.081775" elapsed="0.000308"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.082623" 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-10-20T23:11:58.082259" elapsed="0.000391"/>
</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-10-20T23:11:58.083671" elapsed="0.000189"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.084323" level="INFO">${member_ip} = 10.30.171.157</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:11:58.084033" elapsed="0.000315"/>
</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-10-20T23:11:58.084539" elapsed="0.000259"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.085575" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:11:58.085274" elapsed="0.000327"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:11:58.085643" elapsed="0.000038"/>
</return>
<msg time="2026-10-20T23:11:58.085786" 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-10-20T23:11:58.084996" elapsed="0.000813"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:58.086420" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.157:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7c94a2f51350&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-10-20T23:11:58.086061" elapsed="0.000511"/>
</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-10-20T23:11:58.086734" elapsed="0.000151"/>
</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-10-20T23:11:58.083106" elapsed="0.003850"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-10-20T23:11:58.082909" elapsed="0.004087"/>
</iter>
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:11:58.087731" elapsed="0.000157"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.088337" level="INFO">${member_ip} = 10.30.171.190</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:11:58.088057" elapsed="0.000305"/>
</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-10-20T23:11:58.088540" elapsed="0.000173"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.089626" level="INFO">${session} = ClusterManagement__session_2</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:11:58.089340" elapsed="0.000311"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:11:58.089693" elapsed="0.000030"/>
</return>
<msg time="2026-10-20T23:11:58.089824" level="INFO">${session_alias} = ClusterManagement__session_2</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-10-20T23:11:58.088948" elapsed="0.000899"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:58.090334" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.171.190:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7c94a2f319d0&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-10-20T23:11:58.090029" elapsed="0.000426"/>
</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-10-20T23:11:58.090612" elapsed="0.000146"/>
</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-10-20T23:11:58.087258" elapsed="0.003554"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-10-20T23:11:58.087085" elapsed="0.003765"/>
</iter>
<iter>
<kw name="ClusterManagement__Include_Member_Index" owner="ClusterManagement">
<kw name="Append To List" owner="Collections">
<arg>${member_index_list}</arg>
<arg>${index}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-20T23:11:58.091566" elapsed="0.000145"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.092165" level="INFO">${member_ip} = 10.30.171.89</msg>
<var>${member_ip}</var>
<arg>${ODL_SYSTEM_${index}_IP}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:11:58.091862" elapsed="0.000328"/>
</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-10-20T23:11:58.092351" elapsed="0.000190"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.093285" level="INFO">${session} = ClusterManagement__session_3</msg>
<var>${session}</var>
<arg>ClusterManagement__session_${member_index}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="PASS" start="2026-10-20T23:11:58.093021" elapsed="0.000289"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:11:58.093351" elapsed="0.000041"/>
</return>
<msg time="2026-10-20T23:11:58.093493" level="INFO">${session_alias} = ClusterManagement__session_3</msg>
<var>${session_alias}</var>
<arg>member_index=${index}</arg>
<doc>Return RequestsLibrary session alias pointing to node of given index.</doc>
<status status="PASS" start="2026-10-20T23:11:58.092719" elapsed="0.000797"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:58.094006" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.89:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7c94a2f5d050&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-10-20T23:11:58.093680" elapsed="0.000433"/>
</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-10-20T23:11:58.094272" elapsed="0.000160"/>
</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-10-20T23:11:58.091109" elapsed="0.003376"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-10-20T23:11:58.090943" elapsed="0.003580"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-10-20T23:11:58.082708" elapsed="0.011843"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.095067" level="INFO">${ClusterManagement__member_index_list} = [1, 2, 3]</msg>
<arg>\${ClusterManagement__member_index_list}</arg>
<arg>${member_index_list}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:11:58.094735" elapsed="0.000371"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.095623" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.157', 2: '10.30.171.190', 3: '10.30.171.89'}</msg>
<arg>\${ClusterManagement__index_to_ip_mapping}</arg>
<arg>${index_to_ip_mapping}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:11:58.095285" elapsed="0.000377"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.096162" level="INFO">${ClusterManagement__session_list} = ['ClusterManagement__session_1', 'ClusterManagement__session_2', 'ClusterManagement__session_3']</msg>
<arg>\${ClusterManagement__session_list}</arg>
<arg>${session_list}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="PASS" start="2026-10-20T23:11:58.095842" elapsed="0.000359"/>
</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-10-20T23:11:58.080893" elapsed="0.015359"/>
</kw>
<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-10-20T23:11:58.075308" elapsed="0.021002"/>
</kw>
<test id="s1-t1" name="Check Shards Status And Initialize Variables" line="31">
<kw name="Check OpenFlow Shards Status" owner="ClusterOpenFlow">
<kw name="Run_Keyword_If_At_Least_Phosphorus" owner="CompareStream">
<kw name="Run Keyword And Return" owner="BuiltIn">
<kw name="Run_Keyword_If_At_Least" owner="CompareStream">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Remove Values From List" owner="Collections">
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Removes all occurrences of given `values` from `list`.</doc>
<status status="PASS" start="2026-10-20T23:11:58.105260" elapsed="0.000179"/>
</kw>
<msg time="2026-10-20T23:11:58.105484" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>${Stream_dict}[${ODL_STREAM}] &gt;= ${Stream_dict}[${lower_bound}]</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:11:58.104714" elapsed="0.000823"/>
</kw>
<arg>phosphorus</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Compare ${lower_bound} to manganese and in case manganese is at least ${lower_bound},
run Collections.Remove Values From List [['inventory', 'topology', 'default', 'entity-ownership'], 'entity-ownership'] {} and return its value.</doc>
<status status="PASS" start="2026-10-20T23:11:58.104311" elapsed="0.001293"/>
</kw>
<msg time="2026-10-20T23:11:58.105644" level="INFO">Returning from the enclosing user keyword.</msg>
<arg>Run_Keyword_If_At_Least</arg>
<arg>phosphorus</arg>
<arg>${kw_name}</arg>
<arg>@{varargs}</arg>
<arg>&amp;{kwargs}</arg>
<doc>Runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:11:58.101358" elapsed="0.004329"/>
</kw>
<arg>Collections.Remove Values From List</arg>
<arg>${SHARD_OPER_LIST}</arg>
<arg>entity-ownership</arg>
<doc>Compare phosphorus to manganese and in case manganese is at least phosphorus,
run ${kw_name} @{varargs} &amp;{kwargs} and return its value.</doc>
<status status="PASS" start="2026-10-20T23:11:58.100965" elapsed="0.004787"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.106638" level="INFO">['inventory', 'topology', 'default']</msg>
<arg>${SHARD_OPER_LIST}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:58.106404" elapsed="0.000275"/>
</kw>
<kw name="Verify_Leader_Exists_For_Each_Shard" owner="ClusterManagement">
<for flavor="IN">
<iter>
<kw name="Get_Leader_And_Followers_For_Shard" owner="ClusterManagement">
<kw name="Get_State_Info_For_Shard" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.109597" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:11:58.109254" elapsed="0.000368"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.110064" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:11:58.109768" elapsed="0.000320"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:11:58.110130" elapsed="0.000041"/>
</return>
<msg time="2026-10-20T23:11:58.110278" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-10-20T23:11:58.108873" elapsed="0.001428"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list.</doc>
<status status="PASS" start="2026-10-20T23:11:58.110470" elapsed="0.000134"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.111216" level="INFO">${ds_type} = operational</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:11:58.110767" elapsed="0.000474"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.111638" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:11:58.111403" elapsed="0.000259"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.112046" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:11:58.111802" elapsed="0.000268"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.114178" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:11:58.113898" elapsed="0.000304"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:11:58.114243" elapsed="0.000034"/>
</return>
<msg time="2026-10-20T23:11:58.114391" 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-10-20T23:11:58.113575" elapsed="0.000840"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.131298" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/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 variable.</doc>
<status status="PASS" start="2026-10-20T23:11:58.130995" elapsed="0.000329"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:11:58.132146" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules.manganese/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-10-20T23:11:58.131799" elapsed="0.000470">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:11:58.132357" 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-10-20T23:11:58.131485" elapsed="0.000912"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.132913" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:11:58.132599" elapsed="0.000355"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:11:58.133230" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:11:58.133371" 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-10-20T23:11:58.133116" elapsed="0.000297"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.133828" 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-10-20T23:11:58.133600" elapsed="0.000269"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.134782" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:58.134549" elapsed="0.000274"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.135262" 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-10-20T23:11:58.135008" elapsed="0.000278"/>
</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-10-20T23:11:58.135584" elapsed="0.000020"/>
</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-10-20T23:11:58.135767" 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-10-20T23:11:58.135956" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:11:58.135459" elapsed="0.000549"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:11:58.135330" elapsed="0.000706"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:11:58.136076" elapsed="0.000028"/>
</return>
<msg time="2026-10-20T23:11:58.136207" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:11:58.134202" elapsed="0.002028"/>
</kw>
<status status="PASS" start="2026-10-20T23:11:58.133949" elapsed="0.002308"/>
</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 variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.136437" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:58.136282" elapsed="0.000210"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:58.133914" elapsed="0.002599"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.137067" 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-10-20T23:11:58.136664" elapsed="0.000429"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:11:58.137138" 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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:11:58.130475" elapsed="0.006764"/>
</kw>
<msg time="2026-10-20T23:11:58.137321" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:11:58.125800" elapsed="0.011607"/>
</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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.142570" elapsed="0.000078"/>
</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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.147613" elapsed="0.000073"/>
</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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.152634" elapsed="0.000109"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.153625" elapsed="0.000072"/>
</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-10-20T23:11:58.154630" elapsed="0.000068"/>
</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-10-20T23:11:58.155370" elapsed="0.000039"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:58.155211" elapsed="0.000235"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:11:58.155181" elapsed="0.000308"/>
</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-10-20T23:11:58.155713" 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-10-20T23:11:58.155965" elapsed="0.000022"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.156191" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:11:58.155089" elapsed="0.001163"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:11:58.154817" elapsed="0.001478"/>
</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>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.157197" elapsed="0.000072"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:11:58.157369" elapsed="0.000050"/>
</return>
<msg time="2026-10-20T23:11:58.157561" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:11:58.123863" elapsed="0.033736"/>
</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-10-20T23:11:58.160358" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:11:58.160137" elapsed="0.000311">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:11:58.160639" 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-10-20T23:11:58.159461" elapsed="0.001305"/>
</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-10-20T23:11:58.161570" elapsed="0.000077"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:58.160943" elapsed="0.000772"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.162755" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:11:58.162221" elapsed="0.000580"/>
</kw>
<status status="PASS" start="2026-10-20T23:11:58.161784" elapsed="0.001089"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:58.160873" elapsed="0.002220"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.164772" 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-10-20T23:11:58.163986" elapsed="0.000909"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:11:58.165003" elapsed="0.000043"/>
</return>
<msg time="2026-10-20T23:11:58.165212" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:11:58.158220" elapsed="0.007031"/>
</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-10-20T23:11:58.167735" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:11:58.167529" elapsed="0.000275">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:11:58.168032" 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-10-20T23:11:58.166740" elapsed="0.001411"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:11:58.168680" elapsed="0.000075"/>
</return>
<status status="PASS" start="2026-10-20T23:11:58.168305" elapsed="0.000497"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:58.168250" elapsed="0.000621"/>
</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-10-20T23:11:58.169714" elapsed="0.000078"/>
</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-10-20T23:11:58.170672" elapsed="0.000068"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:11:58.170839" elapsed="0.000032"/>
</return>
<msg time="2026-10-20T23:11:58.171216" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:11:58.165638" elapsed="0.005621"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.174691" 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-10-20T23:11:58.174161" elapsed="0.000647"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.176372" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:58.175841" elapsed="0.000672"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:58.666906" level="INFO">GET Request : url=http://10.30.171.157: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:11:58.667187" level="INFO">GET Response : url=http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 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;/rests/data/ietf-yang-library:modules-state&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;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:11:58.667643" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${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-10-20T23:11:58.177300" elapsed="0.492408">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:11:58.176657" elapsed="0.493394">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:11:58.671353" elapsed="0.000217"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:58.670236" elapsed="0.001508"/>
</branch>
<status status="FAIL" start="2026-10-20T23:11:58.176605" elapsed="0.495293">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:11:58.674033" elapsed="0.000162"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:11:58.674904" elapsed="0.000100"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:11:58.674560" elapsed="0.000536"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:11:58.674436" elapsed="0.000805"/>
</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-10-20T23:11:58.677271" elapsed="0.000172"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:11:58.677644" elapsed="0.000061"/>
</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-10-20T23:11:58.171695" elapsed="0.506360">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:11:58.678605" 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-10-20T23:11:58.116555" elapsed="0.562302">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:11:58.679562" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:58.679179" elapsed="0.000526"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:11:58.679141" elapsed="0.000611"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:11:58.679822" elapsed="0.000029"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="FAIL" start="2026-10-20T23:11:58.115922" elapsed="0.564245">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:11:58.114480" elapsed="0.565833">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:11:58.114462" elapsed="0.565930">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.680860" elapsed="0.000049"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.681393" elapsed="0.000056"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.681772" elapsed="0.000041"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.682240" elapsed="0.000049"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.682726" elapsed="0.000046"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.683114" elapsed="0.000042"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.683502" elapsed="0.000040"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="NOT RUN" start="2026-10-20T23:11:58.683629" elapsed="0.000031"/>
</return>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-10-20T23:11:58.113069" elapsed="0.570768">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${raft_state}</value>
<status status="NOT RUN" start="2026-10-20T23:11:58.683997" elapsed="0.000032"/>
</return>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-10-20T23:11:58.112461" elapsed="0.571731">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.684703" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:58.684365" elapsed="0.000446"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.685185" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:58.684859" elapsed="0.000442"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.685681" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:58.685349" elapsed="0.000434"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:11:58.684332" elapsed="0.001497"/>
</if>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:11:58.112297" elapsed="0.573618">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:11:58.112116" elapsed="0.573951">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-20T23:11:58.686175" elapsed="0.000031"/>
</return>
<var>${leader_list}</var>
<var>${follower_list}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${shard_type}</arg>
<arg>validate=True</arg>
<arg>member_index_list=${member_index_list}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Return lists of Leader and Follower member indices from a given member index list
(or from the full list if empty). If ${shard_type} is not 'config', 'operational' is assumed.
If ${validate}, Fail if raft state is not Leader or Follower (for example on Candidate).
The biggest difference from Get_Leader_And_Followers_For_Shard
is that no check on number of Leaders is performed.</doc>
<status status="FAIL" start="2026-10-20T23:11:58.108259" elapsed="0.578111">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<kw name="Get Length" owner="BuiltIn">
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.686841" elapsed="0.000043"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.687353" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:58.687044" elapsed="0.000428"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:11:58.687010" elapsed="0.000509"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<arg>${leader_list}</arg>
<arg>${1}</arg>
<arg>Too many Leaders.</arg>
<doc>Verifies that the length of the given item is correct.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.687788" elapsed="0.000039"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.688195" elapsed="0.000040"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-20T23:11:58.688323" elapsed="0.000030"/>
</return>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${shard_type}</arg>
<arg>validate=True</arg>
<arg>member_index_list=${member_index_list}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<doc>Get role lists, validate there is one leader, return the leader and list of followers.
Optionally, issue GET to a simple restconf URL to make sure subsequent operations will not encounter 503.</doc>
<status status="FAIL" start="2026-10-20T23:11:58.107557" elapsed="0.580987">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${shard_name}">inventory</var>
<status status="FAIL" start="2026-10-20T23:11:58.107342" elapsed="0.581335">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${shard_name}</var>
<value>@{shard_name_list}</value>
<status status="FAIL" start="2026-10-20T23:11:58.107227" elapsed="0.581558">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<arg>shard_name_list=${SHARD_OPER_LIST}</arg>
<arg>shard_type=operational</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>For each shard name, call Get_Leader_And_Followers_For_Shard.
Not much logic there, but single Keyword is useful when using BuiltIn.Wait_Until_Keyword_Succeeds.</doc>
<status status="FAIL" start="2026-10-20T23:11:58.106880" elapsed="0.582131">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<kw name="Verify_Leader_Exists_For_Each_Shard" owner="ClusterManagement">
<arg>shard_name_list=${SHARD_CONF_LIST}</arg>
<arg>shard_type=config</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>For each shard name, call Get_Leader_And_Followers_For_Shard.
Not much logic there, but single Keyword is useful when using BuiltIn.Wait_Until_Keyword_Succeeds.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.689501" elapsed="0.000049"/>
</kw>
<doc>Check Status for all shards in OpenFlow application.</doc>
<status status="FAIL" start="2026-10-20T23:11:58.097058" elapsed="0.592670">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>3x</arg>
<arg>3s</arg>
<arg>ClusterManagement.Run_Karaf_Command_On_List_Or_All</arg>
<arg>${karaf_log_level}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.690204" elapsed="0.000042"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${flow_count_after_add}</var>
<arg>${flow_count_per_switch} * ${switch_count}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.690645" elapsed="0.000042"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${flow_count_after_add}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.691092" elapsed="0.000041"/>
</kw>
<kw name="Set DPN And Flow Count In Json Add" owner="BulkomaticKeywords">
<var>${temp_json_config_add}</var>
<arg>${orig_json_config_add}</arg>
<arg>${switch_count}</arg>
<arg>${flow_count_per_switch}</arg>
<doc>Set new DPN count and flows count per DPN in the Bulkomatic Add json file.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.691666" elapsed="0.000051"/>
</kw>
<kw name="Set DPN And Flow Count In Json Get" owner="BulkomaticKeywords">
<var>${temp_json_config_get}</var>
<arg>${orig_json_config_get}</arg>
<arg>${switch_count}</arg>
<arg>${flow_count_after_add}</arg>
<doc>Set new DPN count and flows count per DPN in the Bulkomatic Get json file.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.692252" elapsed="0.000049"/>
</kw>
<kw name="Set DPN And Flow Count In Json Del" owner="BulkomaticKeywords">
<var>${temp_json_config_del}</var>
<arg>${orig_json_config_del}</arg>
<arg>${switch_count}</arg>
<arg>${flow_count_per_switch}</arg>
<doc>Set new DPN count and flows count per DPN in the Bulkomatic Del json file.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.692829" elapsed="0.000047"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${temp_json_config_add}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.693296" elapsed="0.000040"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${temp_json_config_get}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.693728" elapsed="0.000040"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${temp_json_config_del}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.694158" elapsed="0.000039"/>
</kw>
<doc>Check Status for all shards in OpenFlow application and set the logs across cluster nodes.</doc>
<status status="FAIL" start="2026-10-20T23:11:58.096372" elapsed="0.598135">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</test>
<test id="s1-t2" name="Get Inventory Config Shard Follower And Leader" line="53">
<kw name="Get InventoryConfig Shard Status" owner="ClusterOpenFlow">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Get_Leader_And_Followers_For_Shard" owner="ClusterManagement">
<kw name="Get_State_Info_For_Shard" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.704722" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:11:58.703919" elapsed="0.000861"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.705773" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:11:58.705136" elapsed="0.000689"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:11:58.705917" elapsed="0.000166"/>
</return>
<msg time="2026-10-20T23:11:58.706315" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-10-20T23:11:58.703109" elapsed="0.003255"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list.</doc>
<status status="PASS" start="2026-10-20T23:11:58.706708" elapsed="0.000326"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.708115" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:11:58.707418" elapsed="0.000750"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.709038" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:11:58.708510" elapsed="0.000581"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.709974" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:11:58.709416" elapsed="0.000613"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.713700" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:11:58.713289" elapsed="0.000446"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:11:58.713796" elapsed="0.000037"/>
</return>
<msg time="2026-10-20T23:11:58.713993" 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-10-20T23:11:58.712782" elapsed="0.001244"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.738126" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/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 variable.</doc>
<status status="PASS" start="2026-10-20T23:11:58.737633" elapsed="0.000532"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:11:58.739217" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules.manganese/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-10-20T23:11:58.738880" elapsed="0.000445">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:11:58.739424" 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-10-20T23:11:58.738418" elapsed="0.001034"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.739927" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:11:58.739620" elapsed="0.000356"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:11:58.740252" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:11:58.740407" 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-10-20T23:11:58.740134" elapsed="0.000303"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.740860" 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-10-20T23:11:58.740633" elapsed="0.000268"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.741801" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:58.741574" elapsed="0.000272"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.742294" 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-10-20T23:11:58.742040" elapsed="0.000278"/>
</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-10-20T23:11:58.742615" elapsed="0.000020"/>
</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-10-20T23:11:58.742789" elapsed="0.000028"/>
</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-10-20T23:11:58.742987" elapsed="0.000020"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:11:58.742491" elapsed="0.000547"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:11:58.742363" elapsed="0.000703"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:11:58.743134" elapsed="0.000027"/>
</return>
<msg time="2026-10-20T23:11:58.743264" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:11:58.741224" elapsed="0.002063"/>
</kw>
<status status="PASS" start="2026-10-20T23:11:58.740984" elapsed="0.002330"/>
</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 variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.743490" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:58.743336" elapsed="0.000219"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:58.740966" elapsed="0.002609"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.744123" 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-10-20T23:11:58.743724" elapsed="0.000424"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:11:58.744191" elapsed="0.000026"/>
</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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:11:58.736602" elapsed="0.007787"/>
</kw>
<msg time="2026-10-20T23:11:58.744457" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:11:58.729047" elapsed="0.015538"/>
</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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.772412" 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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.799806" 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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.827253" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.827700" 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-10-20T23:11:58.828029" 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-10-20T23:11:58.828890" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:58.828621" elapsed="0.000550"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:11:58.828554" elapsed="0.000654"/>
</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-10-20T23:11:58.830194" elapsed="0.000055"/>
</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-10-20T23:11:58.831281" elapsed="0.000055"/>
</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-10-20T23:11:58.832276" elapsed="0.000053"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:11:58.828513" elapsed="0.003872"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:11:58.828333" elapsed="0.004116"/>
</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>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.832666" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:11:58.833198" elapsed="0.000017"/>
</return>
<msg time="2026-10-20T23:11:58.833338" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:11:58.728072" elapsed="0.105289"/>
</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-10-20T23:11:58.835693" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:11:58.834813" elapsed="0.000996">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:11:58.835925" 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-10-20T23:11:58.834034" elapsed="0.002014"/>
</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-10-20T23:11:58.836653" elapsed="0.000095"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:58.836300" elapsed="0.000535"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.838236" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:11:58.837521" elapsed="0.000834"/>
</kw>
<status status="PASS" start="2026-10-20T23:11:58.836914" elapsed="0.001543"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:58.836281" elapsed="0.002249"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.839540" 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-10-20T23:11:58.838690" elapsed="0.000958"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:11:58.839917" elapsed="0.000043"/>
</return>
<msg time="2026-10-20T23:11:58.840061" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:11:58.833690" elapsed="0.006394"/>
</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-10-20T23:11:58.842304" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:11:58.841570" elapsed="0.000864">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:11:58.842551" 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-10-20T23:11:58.840695" elapsed="0.001964"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:11:58.843139" elapsed="0.000024"/>
</return>
<status status="PASS" start="2026-10-20T23:11:58.842912" elapsed="0.000341"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:58.842894" elapsed="0.000435"/>
</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-10-20T23:11:58.843496" 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-10-20T23:11:58.843835" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:11:58.844112" elapsed="0.000022"/>
</return>
<msg time="2026-10-20T23:11:58.844253" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:11:58.840355" elapsed="0.003921"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.846156" 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-10-20T23:11:58.845632" elapsed="0.000618"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:58.847121" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:58.846559" elapsed="0.000649"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:11:58.852778" level="INFO">GET Request : url=http://10.30.171.157: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:11:58.852851" level="INFO">GET Response : url=http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 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;/rests/data/ietf-yang-library:modules-state&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;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:11:58.853135" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${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-10-20T23:11:58.847773" elapsed="0.006258">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:11:58.847395" elapsed="0.006773">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:11:58.854537" elapsed="0.000097"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:58.854295" elapsed="0.000434"/>
</branch>
<status status="FAIL" start="2026-10-20T23:11:58.847360" elapsed="0.007447">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:11:58.855297" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:11:58.855587" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:11:58.855553" elapsed="0.000132"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:11:58.855535" elapsed="0.000225"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.855900" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:11:58.856213" elapsed="0.000017"/>
</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-10-20T23:11:58.844650" elapsed="0.011666">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:11:58.856395" elapsed="0.000014"/>
</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-10-20T23:11:58.717326" elapsed="0.139159">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:11:58.856722" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:58.856567" elapsed="0.000219"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:11:58.856552" elapsed="0.000254"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:11:58.856835" elapsed="0.000012"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="FAIL" start="2026-10-20T23:11:58.716411" elapsed="0.140512">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:11:58.714132" elapsed="0.142915">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:11:58.714094" elapsed="0.142981">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.857288" elapsed="0.000024"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.857508" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.857671" elapsed="0.000019"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.857867" elapsed="0.000022"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.858163" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.858330" elapsed="0.000019"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.858507" elapsed="0.000018"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="NOT RUN" start="2026-10-20T23:11:58.858594" elapsed="0.000015"/>
</return>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-10-20T23:11:58.712046" elapsed="0.146642">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${raft_state}</value>
<status status="NOT RUN" start="2026-10-20T23:11:58.858748" elapsed="0.000015"/>
</return>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-10-20T23:11:58.710922" elapsed="0.147912">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.859076" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:58.858913" elapsed="0.000214"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.859283" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:58.859148" elapsed="0.000188"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.859516" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:58.859359" elapsed="0.000204"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:11:58.858898" elapsed="0.000686"/>
</if>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:11:58.710562" elapsed="0.149059">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:11:58.710137" elapsed="0.149539">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-20T23:11:58.859725" elapsed="0.000013"/>
</return>
<var>${leader_list}</var>
<var>${follower_list}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${shard_type}</arg>
<arg>validate=True</arg>
<arg>member_index_list=${member_index_list}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Return lists of Leader and Follower member indices from a given member index list
(or from the full list if empty). If ${shard_type} is not 'config', 'operational' is assumed.
If ${validate}, Fail if raft state is not Leader or Follower (for example on Candidate).
The biggest difference from Get_Leader_And_Followers_For_Shard
is that no check on number of Leaders is performed.</doc>
<status status="FAIL" start="2026-10-20T23:11:58.701726" elapsed="0.158087">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<kw name="Get Length" owner="BuiltIn">
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.860027" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.860280" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:58.860124" elapsed="0.000204"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:11:58.860101" elapsed="0.000249"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<arg>${leader_list}</arg>
<arg>${1}</arg>
<arg>Too many Leaders.</arg>
<doc>Verifies that the length of the given item is correct.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.860489" elapsed="0.000019"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:58.860659" elapsed="0.000018"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-20T23:11:58.860716" elapsed="0.000013"/>
</return>
<arg>shard_name=inventory</arg>
<arg>shard_type=config</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Get role lists, validate there is one leader, return the leader and list of followers.
Optionally, issue GET to a simple restconf URL to make sure subsequent operations will not encounter 503.</doc>
<status status="FAIL" start="2026-10-20T23:11:58.700210" elapsed="0.160595">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<kw name="Get_Leader_And_Followers_For_Shard" owner="ClusterManagement">
<kw name="Get_State_Info_For_Shard" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:11:59.866635" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:11:59.865748" elapsed="0.000963"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:11:59.867766" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:11:59.867113" elapsed="0.000708"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:11:59.867914" elapsed="0.000101"/>
</return>
<msg time="2026-10-20T23:11:59.868242" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-10-20T23:11:59.864908" elapsed="0.003384"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list.</doc>
<status status="PASS" start="2026-10-20T23:11:59.868652" elapsed="0.000345"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:11:59.870104" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:11:59.869397" elapsed="0.000858"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:11:59.871150" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:11:59.870608" elapsed="0.000595"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:11:59.872063" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:11:59.871533" elapsed="0.000583"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:11:59.879828" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:11:59.879191" elapsed="0.000695"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:11:59.880011" elapsed="0.000060"/>
</return>
<msg time="2026-10-20T23:11:59.880284" 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-10-20T23:11:59.878458" elapsed="0.001882"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:11:59.912805" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/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 variable.</doc>
<status status="PASS" start="2026-10-20T23:11:59.912332" elapsed="0.000517"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:11:59.913894" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules.manganese/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-10-20T23:11:59.913592" elapsed="0.000428">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:11:59.914141" 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-10-20T23:11:59.913117" elapsed="0.001058"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:11:59.914859" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:11:59.914425" elapsed="0.000469"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:11:59.915320" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:11:59.915533" 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-10-20T23:11:59.915155" elapsed="0.000411"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:59.916169" 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-10-20T23:11:59.915829" elapsed="0.000398"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:11:59.917712" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:11:59.917181" elapsed="0.000591"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:11:59.918418" 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-10-20T23:11:59.918038" elapsed="0.000415"/>
</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-10-20T23:11:59.918856" elapsed="0.000028"/>
</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-10-20T23:11:59.919124" elapsed="0.000031"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:59.919388" elapsed="0.000028"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:11:59.918679" elapsed="0.000782"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:11:59.918518" elapsed="0.000981"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:11:59.919554" elapsed="0.000037"/>
</return>
<msg time="2026-10-20T23:11:59.919735" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:11:59.916682" elapsed="0.003085"/>
</kw>
<status status="PASS" start="2026-10-20T23:11:59.916316" elapsed="0.003489"/>
</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 variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:59.920058" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:11:59.919838" elapsed="0.000291"/>
</branch>
<status status="PASS" start="2026-10-20T23:11:59.916290" elapsed="0.003866"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:11:59.921007" 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-10-20T23:11:59.920369" elapsed="0.000675"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:11:59.921105" 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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:11:59.911294" elapsed="0.010066"/>
</kw>
<msg time="2026-10-20T23:11:59.921467" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:11:59.902870" elapsed="0.018778"/>
</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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:59.952541" 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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:11:59.980121" 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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:00.007730" elapsed="0.000026"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:00.008158" 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-10-20T23:12:00.008462" 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-10-20T23:12:00.009451" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:00.009166" elapsed="0.000362"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:00.009099" elapsed="0.000465"/>
</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-10-20T23:12:00.010534" elapsed="0.000055"/>
</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-10-20T23:12:00.011634" elapsed="0.000054"/>
</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-10-20T23:12:00.012623" elapsed="0.000055"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:12:00.008922" elapsed="0.003806"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:12:00.008758" elapsed="0.004031"/>
</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>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:00.013128" elapsed="0.000021"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:00.013570" elapsed="0.000018"/>
</return>
<msg time="2026-10-20T23:12:00.013695" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:11:59.901341" elapsed="0.112382"/>
</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-10-20T23:12:00.016110" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:00.015331" elapsed="0.000892">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:12:00.016340" 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-10-20T23:12:00.014443" elapsed="0.002018"/>
</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-10-20T23:12:00.017135" elapsed="0.000098"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:00.016714" elapsed="0.000607"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:12:00.018671" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:12:00.017954" elapsed="0.000838"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:00.017413" elapsed="0.001467"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:00.016696" elapsed="0.002352"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:00.019988" 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-10-20T23:12:00.019214" elapsed="0.000883"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:12:00.020369" elapsed="0.000044"/>
</return>
<msg time="2026-10-20T23:12:00.020517" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:00.014096" elapsed="0.006444"/>
</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-10-20T23:12:00.022751" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:00.022029" elapsed="0.000828">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:12:00.023048" 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-10-20T23:12:00.021241" elapsed="0.001916"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:12:00.023578" elapsed="0.000024"/>
</return>
<status status="PASS" start="2026-10-20T23:12:00.023423" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:00.023404" elapsed="0.000366"/>
</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-10-20T23:12:00.023922" elapsed="0.000035"/>
</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-10-20T23:12:00.024270" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:12:00.024548" elapsed="0.000019"/>
</return>
<msg time="2026-10-20T23:12:00.024691" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:00.020814" elapsed="0.003900"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:00.026654" 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-10-20T23:12:00.026150" elapsed="0.000593"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:00.027649" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:00.027141" elapsed="0.000595"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:00.033137" level="INFO">GET Request : url=http://10.30.171.157: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:00.033208" level="INFO">GET Response : url=http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 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;/rests/data/ietf-yang-library:modules-state&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;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:00.033462" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${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-10-20T23:12:00.028281" elapsed="0.005965">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:12:00.027903" elapsed="0.006531">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:12:00.034804" elapsed="0.000098"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:00.034568" elapsed="0.000448"/>
</branch>
<status status="FAIL" start="2026-10-20T23:12:00.027884" elapsed="0.007210">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:12:00.035577" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:00.035851" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:12:00.035817" elapsed="0.000153"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:00.035799" elapsed="0.000249"/>
</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-10-20T23:12:00.036187" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:12:00.036496" 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-10-20T23:12:00.025160" elapsed="0.011440">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:00.036667" elapsed="0.000014"/>
</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-10-20T23:11:59.885078" elapsed="0.151677">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:12:00.037027" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:00.036837" elapsed="0.000255"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:00.036822" elapsed="0.000292"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:00.037143" elapsed="0.000013"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="FAIL" start="2026-10-20T23:11:59.883592" elapsed="0.153641">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:11:59.880504" elapsed="0.156790">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:11:59.880468" elapsed="0.156854">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:00.037541" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:00.037739" elapsed="0.000018"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:00.037900" elapsed="0.000018"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:00.038122" elapsed="0.000022"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:12:00.038322" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:00.038507" elapsed="0.000019"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:00.038668" elapsed="0.000018"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="NOT RUN" start="2026-10-20T23:12:00.038726" elapsed="0.000014"/>
</return>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-10-20T23:11:59.877273" elapsed="0.161544">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${raft_state}</value>
<status status="NOT RUN" start="2026-10-20T23:12:00.038909" elapsed="0.000015"/>
</return>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-10-20T23:11:59.872985" elapsed="0.166124">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:00.039328" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:00.039189" elapsed="0.000203"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:00.039549" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:00.039414" elapsed="0.000183"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:00.039757" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:00.039619" elapsed="0.000184"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:00.039173" elapsed="0.000650"/>
</if>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:11:59.872636" elapsed="0.167224">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:11:59.872220" elapsed="0.167691">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-20T23:12:00.039973" elapsed="0.000015"/>
</return>
<var>${leader_list}</var>
<var>${follower_list}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${shard_type}</arg>
<arg>validate=True</arg>
<arg>member_index_list=${member_index_list}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Return lists of Leader and Follower member indices from a given member index list
(or from the full list if empty). If ${shard_type} is not 'config', 'operational' is assumed.
If ${validate}, Fail if raft state is not Leader or Follower (for example on Candidate).
The biggest difference from Get_Leader_And_Followers_For_Shard
is that no check on number of Leaders is performed.</doc>
<status status="FAIL" start="2026-10-20T23:11:59.863542" elapsed="0.176520">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<kw name="Get Length" owner="BuiltIn">
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:00.040232" elapsed="0.000019"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:00.040465" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:00.040309" elapsed="0.000202"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:00.040294" elapsed="0.000238"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<arg>${leader_list}</arg>
<arg>${1}</arg>
<arg>Too many Leaders.</arg>
<doc>Verifies that the length of the given item is correct.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:00.040654" elapsed="0.000018"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:00.040818" elapsed="0.000018"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-20T23:12:00.040876" elapsed="0.000013"/>
</return>
<arg>shard_name=inventory</arg>
<arg>shard_type=config</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Get role lists, validate there is one leader, return the leader and list of followers.
Optionally, issue GET to a simple restconf URL to make sure subsequent operations will not encounter 503.</doc>
<status status="FAIL" start="2026-10-20T23:11:59.861787" elapsed="0.179192">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<kw name="Get_Leader_And_Followers_For_Shard" owner="ClusterManagement">
<kw name="Get_State_Info_For_Shard" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:01.046648" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:12:01.045784" elapsed="0.000929"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:12:01.047735" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:12:01.047091" elapsed="0.000897"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:12:01.048104" elapsed="0.000073"/>
</return>
<msg time="2026-10-20T23:12:01.048422" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-10-20T23:12:01.044972" elapsed="0.003503"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list.</doc>
<status status="PASS" start="2026-10-20T23:12:01.048798" elapsed="0.000344"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:01.050228" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:12:01.049528" elapsed="0.000754"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:12:01.051277" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:12:01.050730" elapsed="0.000602"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:12:01.052272" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:12:01.051662" elapsed="0.000667"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:12:01.057642" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:12:01.057018" elapsed="0.000680"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:12:01.057791" elapsed="0.000060"/>
</return>
<msg time="2026-10-20T23:12:01.058097" 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-10-20T23:12:01.056245" elapsed="0.001904"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:12:01.091284" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/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 variable.</doc>
<status status="PASS" start="2026-10-20T23:12:01.090833" elapsed="0.000489"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:12:01.092304" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules.manganese/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-10-20T23:12:01.092020" elapsed="0.000393">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:12:01.092533" 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-10-20T23:12:01.091555" elapsed="0.001011"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:01.093268" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:01.092799" elapsed="0.000505"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:12:01.093710" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:12:01.093897" 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-10-20T23:12:01.093547" elapsed="0.000411"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:01.094590" 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-10-20T23:12:01.094225" elapsed="0.000424"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:01.095911" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:01.095591" elapsed="0.000400"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:12:01.096620" 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-10-20T23:12:01.096245" elapsed="0.000409"/>
</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-10-20T23:12:01.097096" elapsed="0.000031"/>
</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-10-20T23:12:01.097349" elapsed="0.000048"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:01.097612" elapsed="0.000026"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:12:01.096877" elapsed="0.000805"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:12:01.096716" elapsed="0.001004"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:12:01.097773" elapsed="0.000036"/>
</return>
<msg time="2026-10-20T23:12:01.097976" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:12:01.095108" elapsed="0.002903"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:01.094734" elapsed="0.003317"/>
</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 variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:01.098279" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:01.098082" elapsed="0.000270"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:01.094710" elapsed="0.003685"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:12:01.099160" 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-10-20T23:12:01.098607" elapsed="0.000589"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:12:01.099300" elapsed="0.000038"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:12:01.089853" elapsed="0.009727"/>
</kw>
<msg time="2026-10-20T23:12:01.099672" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:12:01.080720" elapsed="0.019127"/>
</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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:01.130816" 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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:01.158511" 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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:01.186465" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:01.186885" 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-10-20T23:12:01.187316" 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-10-20T23:12:01.188212" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:01.187921" elapsed="0.000366"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:01.187852" elapsed="0.000472"/>
</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-10-20T23:12:01.189429" elapsed="0.000055"/>
</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-10-20T23:12:01.190442" elapsed="0.000055"/>
</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-10-20T23:12:01.191525" elapsed="0.000054"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:12:01.187805" elapsed="0.003820"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:12:01.187632" elapsed="0.004053"/>
</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>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:01.191915" elapsed="0.000038"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:01.192381" elapsed="0.000019"/>
</return>
<msg time="2026-10-20T23:12:01.192511" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:12:01.079194" elapsed="0.113341"/>
</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-10-20T23:12:01.195035" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:01.194189" elapsed="0.000966">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:12:01.195270" 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-10-20T23:12:01.193365" elapsed="0.002024"/>
</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-10-20T23:12:01.196006" elapsed="0.000096"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:01.195644" elapsed="0.000545"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:12:01.197609" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:12:01.196801" elapsed="0.000930"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:01.196266" elapsed="0.001553"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:01.195625" elapsed="0.002268"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:01.198823" 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-10-20T23:12:01.198070" elapsed="0.000955"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:12:01.199299" elapsed="0.000031"/>
</return>
<msg time="2026-10-20T23:12:01.199444" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:01.192851" elapsed="0.006617"/>
</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-10-20T23:12:01.201691" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:01.200866" elapsed="0.000933">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:12:01.201922" 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-10-20T23:12:01.200090" elapsed="0.001964"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:12:01.202506" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-10-20T23:12:01.202329" elapsed="0.000293"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:01.202307" elapsed="0.000394"/>
</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-10-20T23:12:01.202860" 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-10-20T23:12:01.203265" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:12:01.203533" elapsed="0.000017"/>
</return>
<msg time="2026-10-20T23:12:01.203666" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:01.199745" elapsed="0.003949"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:01.205568" 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-10-20T23:12:01.205049" elapsed="0.000609"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:01.206465" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:01.205967" elapsed="0.000586"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:01.211402" level="INFO">GET Request : url=http://10.30.171.157: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:01.211476" level="INFO">GET Response : url=http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 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;/rests/data/ietf-yang-library:modules-state&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;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:01.211693" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${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-10-20T23:12:01.207149" elapsed="0.005516">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:12:01.206722" elapsed="0.006108">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:12:01.213239" elapsed="0.000098"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:01.213012" elapsed="0.000441"/>
</branch>
<status status="FAIL" start="2026-10-20T23:12:01.206704" elapsed="0.006830">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:12:01.214038" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:01.214314" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:12:01.214280" elapsed="0.000143"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:01.214262" elapsed="0.000236"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:01.214640" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:12:01.214955" elapsed="0.000017"/>
</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-10-20T23:12:01.204066" elapsed="0.010993">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:01.215126" elapsed="0.000014"/>
</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-10-20T23:12:01.062877" elapsed="0.152338">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:12:01.215469" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:01.215297" elapsed="0.000237"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:01.215281" elapsed="0.000274"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:01.215584" elapsed="0.000013"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="FAIL" start="2026-10-20T23:12:01.061483" elapsed="0.154190">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:12:01.058287" elapsed="0.157449">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:12:01.058250" elapsed="0.157514">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:01.216025" elapsed="0.000024"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:01.216230" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:01.216407" elapsed="0.000020"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:01.216606" elapsed="0.000021"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:12:01.216806" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:01.217048" elapsed="0.000020"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:01.217211" elapsed="0.000019"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="NOT RUN" start="2026-10-20T23:12:01.217270" elapsed="0.000014"/>
</return>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-10-20T23:12:01.055111" elapsed="0.162251">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${raft_state}</value>
<status status="NOT RUN" start="2026-10-20T23:12:01.217478" elapsed="0.000016"/>
</return>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-10-20T23:12:01.053710" elapsed="0.163858">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:01.217802" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:01.217653" elapsed="0.000201"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:01.218040" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:01.217876" elapsed="0.000218"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:01.218261" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:01.218116" elapsed="0.000193"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:01.217636" elapsed="0.000694"/>
</if>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:12:01.053331" elapsed="0.165052">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:12:01.052461" elapsed="0.165978">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-20T23:12:01.218486" elapsed="0.000014"/>
</return>
<var>${leader_list}</var>
<var>${follower_list}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${shard_type}</arg>
<arg>validate=True</arg>
<arg>member_index_list=${member_index_list}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Return lists of Leader and Follower member indices from a given member index list
(or from the full list if empty). If ${shard_type} is not 'config', 'operational' is assumed.
If ${validate}, Fail if raft state is not Leader or Follower (for example on Candidate).
The biggest difference from Get_Leader_And_Followers_For_Shard
is that no check on number of Leaders is performed.</doc>
<status status="FAIL" start="2026-10-20T23:12:01.043595" elapsed="0.174979">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<kw name="Get Length" owner="BuiltIn">
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:01.218745" elapsed="0.000020"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:01.218977" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:01.218823" elapsed="0.000203"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:01.218808" elapsed="0.000239"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<arg>${leader_list}</arg>
<arg>${1}</arg>
<arg>Too many Leaders.</arg>
<doc>Verifies that the length of the given item is correct.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:01.219168" elapsed="0.000019"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:01.219334" elapsed="0.000018"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-20T23:12:01.219407" elapsed="0.000014"/>
</return>
<arg>shard_name=inventory</arg>
<arg>shard_type=config</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Get role lists, validate there is one leader, return the leader and list of followers.
Optionally, issue GET to a simple restconf URL to make sure subsequent operations will not encounter 503.</doc>
<status status="FAIL" start="2026-10-20T23:12:01.041922" elapsed="0.177575">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<kw name="Get_Leader_And_Followers_For_Shard" owner="ClusterManagement">
<kw name="Get_State_Info_For_Shard" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:02.225401" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:12:02.224513" elapsed="0.000953"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:12:02.226482" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:12:02.225809" elapsed="0.000729"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:12:02.226643" elapsed="0.000073"/>
</return>
<msg time="2026-10-20T23:12:02.226969" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-10-20T23:12:02.223656" elapsed="0.003367"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list.</doc>
<status status="PASS" start="2026-10-20T23:12:02.227352" elapsed="0.000330"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:02.228836" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:12:02.228074" elapsed="0.000817"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:12:02.229894" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:12:02.229281" elapsed="0.000704"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:12:02.231035" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:12:02.230463" elapsed="0.000627"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:12:02.236512" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:12:02.235850" elapsed="0.000718"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:12:02.236661" elapsed="0.000059"/>
</return>
<msg time="2026-10-20T23:12:02.236966" 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-10-20T23:12:02.235061" elapsed="0.001960"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:12:02.269867" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/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 variable.</doc>
<status status="PASS" start="2026-10-20T23:12:02.269444" elapsed="0.000460"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:12:02.270886" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules.manganese/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-10-20T23:12:02.270594" elapsed="0.000409">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:12:02.271121" 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-10-20T23:12:02.270139" elapsed="0.001014"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:02.271823" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:02.271398" elapsed="0.000459"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:12:02.272272" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:12:02.272481" 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-10-20T23:12:02.272106" elapsed="0.000408"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:02.273128" 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-10-20T23:12:02.272773" elapsed="0.000412"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:02.274627" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:02.274293" elapsed="0.000391"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:12:02.275352" 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-10-20T23:12:02.274922" elapsed="0.000484"/>
</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-10-20T23:12:02.275809" 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-10-20T23:12:02.276237" elapsed="0.000033"/>
</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-10-20T23:12:02.276512" elapsed="0.000028"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:12:02.275631" elapsed="0.000954"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:12:02.275478" elapsed="0.001148"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:12:02.276681" elapsed="0.000036"/>
</return>
<msg time="2026-10-20T23:12:02.276860" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:12:02.273638" elapsed="0.003255"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:02.273277" elapsed="0.003689"/>
</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 variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:02.277218" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:02.277006" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:02.273253" elapsed="0.004064"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:12:02.278110" 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-10-20T23:12:02.277544" elapsed="0.000602"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:12:02.278248" elapsed="0.000039"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:12:02.268457" elapsed="0.010074"/>
</kw>
<msg time="2026-10-20T23:12:02.278622" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:12:02.259500" elapsed="0.019298"/>
</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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:02.309468" 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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:02.336681" 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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:02.364256" elapsed="0.000030"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:02.364703" 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-10-20T23:12:02.365007" 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-10-20T23:12:02.365859" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:02.365591" elapsed="0.000369"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:02.365525" elapsed="0.000474"/>
</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-10-20T23:12:02.367197" elapsed="0.000055"/>
</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-10-20T23:12:02.368203" elapsed="0.000054"/>
</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-10-20T23:12:02.369195" elapsed="0.000055"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:12:02.365483" elapsed="0.003812"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:12:02.365305" elapsed="0.004049"/>
</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>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:02.369587" elapsed="0.000019"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:02.370027" elapsed="0.000018"/>
</return>
<msg time="2026-10-20T23:12:02.370138" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:12:02.258011" elapsed="0.112150"/>
</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-10-20T23:12:02.372525" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:02.371782" elapsed="0.000882">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:12:02.372780" 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-10-20T23:12:02.370815" elapsed="0.002072"/>
</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-10-20T23:12:02.373515" elapsed="0.000096"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:02.373159" elapsed="0.000540"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:12:02.375238" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:12:02.374323" elapsed="0.001036"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:02.373776" elapsed="0.001686"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:02.373140" elapsed="0.002397"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:02.376470" 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-10-20T23:12:02.375703" elapsed="0.000874"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:12:02.376847" elapsed="0.000028"/>
</return>
<msg time="2026-10-20T23:12:02.376991" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:02.370490" elapsed="0.006524"/>
</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-10-20T23:12:02.379286" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:02.378445" elapsed="0.000965">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:12:02.379526" 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-10-20T23:12:02.377630" elapsed="0.002003"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:12:02.380056" elapsed="0.000024"/>
</return>
<status status="PASS" start="2026-10-20T23:12:02.379886" elapsed="0.000284"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:02.379867" elapsed="0.000380"/>
</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-10-20T23:12:02.380412" 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-10-20T23:12:02.380757" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:12:02.381063" elapsed="0.000019"/>
</return>
<msg time="2026-10-20T23:12:02.381211" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:02.377287" elapsed="0.003947"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:02.383297" 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-10-20T23:12:02.382775" elapsed="0.000625"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:02.384204" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:02.383701" elapsed="0.000592"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:02.389888" level="INFO">GET Request : url=http://10.30.171.157: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:02.390056" level="INFO">GET Response : url=http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 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;/rests/data/ietf-yang-library:modules-state&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;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:02.390281" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${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-10-20T23:12:02.384851" elapsed="0.006218">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:12:02.384483" elapsed="0.006721">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:12:02.391610" elapsed="0.000097"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:02.391383" elapsed="0.000420"/>
</branch>
<status status="FAIL" start="2026-10-20T23:12:02.384464" elapsed="0.007418">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:12:02.392361" elapsed="0.000040"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:02.392653" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:12:02.392619" elapsed="0.000130"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:02.392601" elapsed="0.000224"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:02.392987" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:12:02.393286" 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-10-20T23:12:02.381795" elapsed="0.011606">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:02.393469" elapsed="0.000014"/>
</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-10-20T23:12:02.241730" elapsed="0.151827">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:12:02.393794" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:02.393639" elapsed="0.000219"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:02.393624" elapsed="0.000255"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:02.393908" elapsed="0.000012"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="FAIL" start="2026-10-20T23:12:02.240324" elapsed="0.153702">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:12:02.237162" elapsed="0.156925">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:12:02.237125" elapsed="0.156990">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:02.394322" elapsed="0.000022"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:02.394542" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:02.394706" elapsed="0.000018"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:02.394902" elapsed="0.000021"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:12:02.395140" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:02.395311" elapsed="0.000018"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:02.395497" elapsed="0.000019"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="NOT RUN" start="2026-10-20T23:12:02.395556" elapsed="0.000014"/>
</return>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-10-20T23:12:02.233888" elapsed="0.161760">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${raft_state}</value>
<status status="NOT RUN" start="2026-10-20T23:12:02.395738" elapsed="0.000015"/>
</return>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-10-20T23:12:02.232117" elapsed="0.163709">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:02.396066" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:02.395904" elapsed="0.000212"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:02.396271" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:02.396137" elapsed="0.000188"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:02.396499" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:02.396345" elapsed="0.000201"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:02.395889" elapsed="0.000677"/>
</if>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:12:02.231606" elapsed="0.164997">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:12:02.231196" elapsed="0.165460">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-20T23:12:02.396704" elapsed="0.000013"/>
</return>
<var>${leader_list}</var>
<var>${follower_list}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${shard_type}</arg>
<arg>validate=True</arg>
<arg>member_index_list=${member_index_list}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Return lists of Leader and Follower member indices from a given member index list
(or from the full list if empty). If ${shard_type} is not 'config', 'operational' is assumed.
If ${validate}, Fail if raft state is not Leader or Follower (for example on Candidate).
The biggest difference from Get_Leader_And_Followers_For_Shard
is that no check on number of Leaders is performed.</doc>
<status status="FAIL" start="2026-10-20T23:12:02.222259" elapsed="0.174533">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<kw name="Get Length" owner="BuiltIn">
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:02.396975" elapsed="0.000020"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:02.397191" elapsed="0.000017"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:02.397053" elapsed="0.000183"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:02.397038" elapsed="0.000218"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<arg>${leader_list}</arg>
<arg>${1}</arg>
<arg>Too many Leaders.</arg>
<doc>Verifies that the length of the given item is correct.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:02.397394" elapsed="0.000019"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:02.397560" elapsed="0.000018"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-20T23:12:02.397617" elapsed="0.000012"/>
</return>
<arg>shard_name=inventory</arg>
<arg>shard_type=config</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Get role lists, validate there is one leader, return the leader and list of followers.
Optionally, issue GET to a simple restconf URL to make sure subsequent operations will not encounter 503.</doc>
<status status="FAIL" start="2026-10-20T23:12:02.220625" elapsed="0.177079">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<kw name="Get_Leader_And_Followers_For_Shard" owner="ClusterManagement">
<kw name="Get_State_Info_For_Shard" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:03.403691" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:12:03.402815" elapsed="0.000939"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:12:03.404793" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:12:03.404128" elapsed="0.000720"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:12:03.404974" elapsed="0.000075"/>
</return>
<msg time="2026-10-20T23:12:03.405276" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-10-20T23:12:03.401985" elapsed="0.003353"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list.</doc>
<status status="PASS" start="2026-10-20T23:12:03.405697" elapsed="0.000340"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:03.407614" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:12:03.406424" elapsed="0.001249"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:12:03.408572" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:12:03.408033" elapsed="0.000594"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:12:03.409553" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:12:03.408969" elapsed="0.000640"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:12:03.414482" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:12:03.413831" elapsed="0.000708"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:12:03.414631" elapsed="0.000059"/>
</return>
<msg time="2026-10-20T23:12:03.414900" 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-10-20T23:12:03.413108" elapsed="0.001874"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:12:03.448622" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/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 variable.</doc>
<status status="PASS" start="2026-10-20T23:12:03.448171" elapsed="0.000489"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:12:03.449681" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules.manganese/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-10-20T23:12:03.449351" elapsed="0.000430">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:12:03.449898" 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-10-20T23:12:03.448874" elapsed="0.001076"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:03.450635" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:03.450188" elapsed="0.000484"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:12:03.451073" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:12:03.451275" 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-10-20T23:12:03.450891" elapsed="0.000419"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:03.452096" 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-10-20T23:12:03.451594" elapsed="0.000561"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:03.453448" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:03.453111" elapsed="0.000395"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:12:03.454125" 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-10-20T23:12:03.453745" elapsed="0.000413"/>
</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-10-20T23:12:03.454610" elapsed="0.000028"/>
</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-10-20T23:12:03.454854" elapsed="0.000031"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:03.455122" elapsed="0.000031"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:12:03.454414" elapsed="0.000784"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:12:03.454222" elapsed="0.001012"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:12:03.455287" elapsed="0.000037"/>
</return>
<msg time="2026-10-20T23:12:03.455480" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:12:03.452606" elapsed="0.002914"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:03.452244" elapsed="0.003316"/>
</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 variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:03.455792" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:03.455591" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:03.452217" elapsed="0.003670"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:12:03.456687" 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-10-20T23:12:03.456139" elapsed="0.000583"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:12:03.456781" 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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:12:03.447179" elapsed="0.009911"/>
</kw>
<msg time="2026-10-20T23:12:03.457235" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:12:03.437682" elapsed="0.019751"/>
</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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:03.488326" 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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:03.517266" 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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:03.544748" elapsed="0.000027"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:03.545189" 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-10-20T23:12:03.545491" 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-10-20T23:12:03.546586" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:03.546299" elapsed="0.000362"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:03.546231" elapsed="0.000466"/>
</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-10-20T23:12:03.547671" elapsed="0.000055"/>
</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-10-20T23:12:03.548700" elapsed="0.000055"/>
</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-10-20T23:12:03.549705" elapsed="0.000055"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:12:03.546187" elapsed="0.003621"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:12:03.545794" elapsed="0.004073"/>
</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>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:03.550317" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:03.550744" elapsed="0.000017"/>
</return>
<msg time="2026-10-20T23:12:03.550856" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:12:03.436154" elapsed="0.114726"/>
</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-10-20T23:12:03.553091" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:03.552332" elapsed="0.000869">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:12:03.553317" 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-10-20T23:12:03.551551" elapsed="0.001888"/>
</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-10-20T23:12:03.554247" elapsed="0.000094"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:03.553693" elapsed="0.000754"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:12:03.555767" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:12:03.555057" elapsed="0.000831"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:03.554524" elapsed="0.001468"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:03.553675" elapsed="0.002391"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:03.557000" 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-10-20T23:12:03.556227" elapsed="0.000882"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:12:03.557392" elapsed="0.000029"/>
</return>
<msg time="2026-10-20T23:12:03.557523" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:03.551208" elapsed="0.006338"/>
</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-10-20T23:12:03.559801" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:03.559080" elapsed="0.000833">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:12:03.560055" 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-10-20T23:12:03.558294" elapsed="0.001873"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:12:03.560620" elapsed="0.000023"/>
</return>
<status status="PASS" start="2026-10-20T23:12:03.560463" elapsed="0.000273"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:03.560443" elapsed="0.000371"/>
</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-10-20T23:12:03.560996" 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-10-20T23:12:03.561323" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:12:03.561585" elapsed="0.000017"/>
</return>
<msg time="2026-10-20T23:12:03.561715" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:03.557819" elapsed="0.003920"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:03.563550" 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-10-20T23:12:03.563053" elapsed="0.000584"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:03.564452" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:03.563950" elapsed="0.000589"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:03.570459" level="INFO">GET Request : url=http://10.30.171.157: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:03.570530" level="INFO">GET Response : url=http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 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;/rests/data/ietf-yang-library:modules-state&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;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:03.570762" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${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-10-20T23:12:03.565091" elapsed="0.006440">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:12:03.564705" elapsed="0.006960">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:12:03.572183" elapsed="0.000097"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:03.571955" elapsed="0.000437"/>
</branch>
<status status="FAIL" start="2026-10-20T23:12:03.564687" elapsed="0.007785">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:12:03.572956" elapsed="0.000052"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:03.573262" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:12:03.573228" elapsed="0.000147"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:03.573209" elapsed="0.000245"/>
</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-10-20T23:12:03.573594" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:12:03.573887" 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-10-20T23:12:03.562236" elapsed="0.011782">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:03.574086" elapsed="0.000014"/>
</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-10-20T23:12:03.419702" elapsed="0.154473">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:12:03.574423" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:03.574257" elapsed="0.000230"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:03.574241" elapsed="0.000267"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:03.574537" elapsed="0.000013"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="FAIL" start="2026-10-20T23:12:03.418302" elapsed="0.156325">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:12:03.415139" elapsed="0.159547">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:12:03.415089" elapsed="0.159625">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:03.574918" elapsed="0.000058"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:03.575151" elapsed="0.000025"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:03.575325" elapsed="0.000020"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:03.575542" elapsed="0.000022"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:12:03.575741" elapsed="0.000021"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:03.575904" elapsed="0.000019"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:03.576080" elapsed="0.000019"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="NOT RUN" start="2026-10-20T23:12:03.576149" elapsed="0.000018"/>
</return>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-10-20T23:12:03.411968" elapsed="0.164294">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${raft_state}</value>
<status status="NOT RUN" start="2026-10-20T23:12:03.576332" elapsed="0.000020"/>
</return>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-10-20T23:12:03.410595" elapsed="0.165853">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:03.576667" elapsed="0.000050"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:03.576528" elapsed="0.000221"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:03.576906" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:03.576771" elapsed="0.000199"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:03.577132" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:03.576992" elapsed="0.000186"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:03.576512" elapsed="0.000686"/>
</if>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:12:03.410240" elapsed="0.166994">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:12:03.409814" elapsed="0.167471">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-20T23:12:03.577336" elapsed="0.000015"/>
</return>
<var>${leader_list}</var>
<var>${follower_list}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${shard_type}</arg>
<arg>validate=True</arg>
<arg>member_index_list=${member_index_list}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Return lists of Leader and Follower member indices from a given member index list
(or from the full list if empty). If ${shard_type} is not 'config', 'operational' is assumed.
If ${validate}, Fail if raft state is not Leader or Follower (for example on Candidate).
The biggest difference from Get_Leader_And_Followers_For_Shard
is that no check on number of Leaders is performed.</doc>
<status status="FAIL" start="2026-10-20T23:12:03.400552" elapsed="0.176885">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<kw name="Get Length" owner="BuiltIn">
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:03.577607" elapsed="0.000019"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:03.577820" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:03.577683" elapsed="0.000182"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:03.577668" elapsed="0.000217"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<arg>${leader_list}</arg>
<arg>${1}</arg>
<arg>Too many Leaders.</arg>
<doc>Verifies that the length of the given item is correct.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:03.578033" elapsed="0.000019"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:03.578198" elapsed="0.000018"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-20T23:12:03.578255" elapsed="0.000013"/>
</return>
<arg>shard_name=inventory</arg>
<arg>shard_type=config</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Get role lists, validate there is one leader, return the leader and list of followers.
Optionally, issue GET to a simple restconf URL to make sure subsequent operations will not encounter 503.</doc>
<status status="FAIL" start="2026-10-20T23:12:03.398727" elapsed="0.179614">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<kw name="Get_Leader_And_Followers_For_Shard" owner="ClusterManagement">
<kw name="Get_State_Info_For_Shard" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:04.584029" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:12:04.583138" elapsed="0.000958"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:12:04.585121" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:12:04.584463" elapsed="0.000714"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:12:04.585269" elapsed="0.000070"/>
</return>
<msg time="2026-10-20T23:12:04.585586" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-10-20T23:12:04.582270" elapsed="0.003368"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list.</doc>
<status status="PASS" start="2026-10-20T23:12:04.586012" elapsed="0.000309"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:04.587458" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:12:04.586718" elapsed="0.000796"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:12:04.588404" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:12:04.587841" elapsed="0.000618"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:12:04.589311" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:12:04.588763" elapsed="0.000621"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:12:04.594631" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:12:04.594000" elapsed="0.000689"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:12:04.594781" elapsed="0.000061"/>
</return>
<msg time="2026-10-20T23:12:04.595179" 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-10-20T23:12:04.593237" elapsed="0.001996"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:12:04.628843" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/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 variable.</doc>
<status status="PASS" start="2026-10-20T23:12:04.628418" elapsed="0.000462"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:12:04.629856" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules.manganese/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-10-20T23:12:04.629571" elapsed="0.000399">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:12:04.630095" 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-10-20T23:12:04.629112" elapsed="0.001015"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:04.630817" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:04.630383" elapsed="0.000470"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:12:04.631263" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:12:04.631470" 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-10-20T23:12:04.631098" elapsed="0.000406"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:04.632130" 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-10-20T23:12:04.631779" elapsed="0.000409"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:04.633634" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:04.633123" elapsed="0.000570"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:12:04.634321" 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-10-20T23:12:04.633955" elapsed="0.000403"/>
</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-10-20T23:12:04.634773" elapsed="0.000028"/>
</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-10-20T23:12:04.635047" elapsed="0.000032"/>
</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-10-20T23:12:04.635299" elapsed="0.000027"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:12:04.634597" elapsed="0.000788"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:12:04.634445" elapsed="0.000979"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:12:04.635479" elapsed="0.000037"/>
</return>
<msg time="2026-10-20T23:12:04.635659" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:12:04.632626" elapsed="0.003066"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:04.632274" elapsed="0.003457"/>
</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 variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:04.635995" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:04.635762" elapsed="0.000306"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:04.632250" elapsed="0.003846"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:12:04.636865" 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-10-20T23:12:04.636308" elapsed="0.000593"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:12:04.636993" elapsed="0.000037"/>
</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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:12:04.627427" elapsed="0.009824"/>
</kw>
<msg time="2026-10-20T23:12:04.637340" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:12:04.617772" elapsed="0.019771"/>
</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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:04.668350" elapsed="0.000045"/>
</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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:04.695892" elapsed="0.000045"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:04.723219" elapsed="0.000026"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:04.723656" 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-10-20T23:12:04.724127" 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-10-20T23:12:04.725045" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:04.724741" elapsed="0.000381"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:04.724671" elapsed="0.000488"/>
</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-10-20T23:12:04.726344" elapsed="0.000071"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:04.727358" elapsed="0.000069"/>
</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-10-20T23:12:04.728344" elapsed="0.000066"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:12:04.724624" elapsed="0.003832"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:12:04.724450" elapsed="0.004067"/>
</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>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:04.728735" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:04.729176" elapsed="0.000019"/>
</return>
<msg time="2026-10-20T23:12:04.729302" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:12:04.616281" elapsed="0.113045"/>
</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-10-20T23:12:04.731765" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:04.731012" elapsed="0.000871">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:12:04.732018" 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-10-20T23:12:04.730193" elapsed="0.001933"/>
</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-10-20T23:12:04.732736" elapsed="0.000094"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:04.732389" elapsed="0.000595"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:12:04.734537" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:12:04.733613" elapsed="0.001046"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:04.733067" elapsed="0.001681"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:04.732358" elapsed="0.002466"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:04.735760" 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-10-20T23:12:04.735003" elapsed="0.000866"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:12:04.736155" elapsed="0.000030"/>
</return>
<msg time="2026-10-20T23:12:04.736287" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:04.729655" elapsed="0.006655"/>
</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-10-20T23:12:04.738571" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:04.737719" elapsed="0.000961">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:12:04.738795" 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-10-20T23:12:04.736922" elapsed="0.001979"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:12:04.739327" elapsed="0.000024"/>
</return>
<status status="PASS" start="2026-10-20T23:12:04.739171" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:04.739152" elapsed="0.000385"/>
</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-10-20T23:12:04.739690" 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-10-20T23:12:04.740027" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:12:04.740276" elapsed="0.000016"/>
</return>
<msg time="2026-10-20T23:12:04.740416" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:04.736600" elapsed="0.003844"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:04.742442" 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-10-20T23:12:04.741804" elapsed="0.000729"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:04.743323" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:04.742824" elapsed="0.000601"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:04.748714" level="INFO">GET Request : url=http://10.30.171.157: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:04.748784" level="INFO">GET Response : url=http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 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;/rests/data/ietf-yang-library:modules-state&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;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:04.749029" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${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-10-20T23:12:04.743969" elapsed="0.005817">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:12:04.743593" elapsed="0.006328">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:12:04.750389" elapsed="0.000103"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:04.750148" elapsed="0.000438"/>
</branch>
<status status="FAIL" start="2026-10-20T23:12:04.743575" elapsed="0.007090">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:12:04.751142" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:04.751462" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:12:04.751428" elapsed="0.000132"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:04.751409" 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-10-20T23:12:04.751775" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:12:04.752086" 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-10-20T23:12:04.740999" elapsed="0.011190">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:04.752257" elapsed="0.000014"/>
</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-10-20T23:12:04.600046" elapsed="0.152300">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:12:04.752606" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:04.752447" elapsed="0.000224"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:04.752432" elapsed="0.000259"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:04.752720" elapsed="0.000013"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="FAIL" start="2026-10-20T23:12:04.598603" elapsed="0.154217">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:12:04.595396" elapsed="0.157487">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:12:04.595336" elapsed="0.157574">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:04.753147" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:04.753351" elapsed="0.000038"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:04.753534" elapsed="0.000018"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:04.753751" elapsed="0.000022"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:12:04.753977" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:04.754143" elapsed="0.000018"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:04.754301" elapsed="0.000018"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="NOT RUN" start="2026-10-20T23:12:04.754375" elapsed="0.000016"/>
</return>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-10-20T23:12:04.591640" elapsed="0.162829">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${raft_state}</value>
<status status="NOT RUN" start="2026-10-20T23:12:04.754534" elapsed="0.000016"/>
</return>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-10-20T23:12:04.590257" elapsed="0.164364">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:04.754838" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:04.754699" elapsed="0.000187"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:04.755087" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:04.754907" elapsed="0.000230"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:04.755297" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:04.755157" elapsed="0.000186"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:04.754683" elapsed="0.000695"/>
</if>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:12:04.589877" elapsed="0.165539">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:12:04.589494" elapsed="0.165974">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-20T23:12:04.755514" elapsed="0.000014"/>
</return>
<var>${leader_list}</var>
<var>${follower_list}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${shard_type}</arg>
<arg>validate=True</arg>
<arg>member_index_list=${member_index_list}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Return lists of Leader and Follower member indices from a given member index list
(or from the full list if empty). If ${shard_type} is not 'config', 'operational' is assumed.
If ${validate}, Fail if raft state is not Leader or Follower (for example on Candidate).
The biggest difference from Get_Leader_And_Followers_For_Shard
is that no check on number of Leaders is performed.</doc>
<status status="FAIL" start="2026-10-20T23:12:04.580896" elapsed="0.174705">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<kw name="Get Length" owner="BuiltIn">
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:04.755770" elapsed="0.000019"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:04.756003" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:04.755846" elapsed="0.000205"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:04.755831" elapsed="0.000240"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<arg>${leader_list}</arg>
<arg>${1}</arg>
<arg>Too many Leaders.</arg>
<doc>Verifies that the length of the given item is correct.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:04.756193" elapsed="0.000024"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:04.756380" elapsed="0.000019"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-20T23:12:04.756438" elapsed="0.000013"/>
</return>
<arg>shard_name=inventory</arg>
<arg>shard_type=config</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Get role lists, validate there is one leader, return the leader and list of followers.
Optionally, issue GET to a simple restconf URL to make sure subsequent operations will not encounter 503.</doc>
<status status="FAIL" start="2026-10-20T23:12:04.579312" elapsed="0.177215">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<kw name="Get_Leader_And_Followers_For_Shard" owner="ClusterManagement">
<kw name="Get_State_Info_For_Shard" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:05.762278" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:12:05.761414" elapsed="0.000928"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:12:05.763343" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:12:05.762706" elapsed="0.000714"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:12:05.763516" elapsed="0.000070"/>
</return>
<msg time="2026-10-20T23:12:05.763993" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-10-20T23:12:05.760524" elapsed="0.003522"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list.</doc>
<status status="PASS" start="2026-10-20T23:12:05.764386" elapsed="0.000296"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:05.766495" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:12:05.765246" elapsed="0.001305"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:12:05.767441" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:12:05.766875" elapsed="0.000621"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:12:05.768332" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:12:05.767802" elapsed="0.000602"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:12:05.773216" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:12:05.772578" elapsed="0.000696"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:12:05.773390" elapsed="0.000067"/>
</return>
<msg time="2026-10-20T23:12:05.773669" 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-10-20T23:12:05.771806" elapsed="0.001913"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:12:05.808208" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/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 variable.</doc>
<status status="PASS" start="2026-10-20T23:12:05.807677" elapsed="0.000576"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:12:05.809315" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules.manganese/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-10-20T23:12:05.809008" elapsed="0.000422">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:12:05.809555" 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-10-20T23:12:05.808510" elapsed="0.001079"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:05.810338" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:05.809835" elapsed="0.000556"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:12:05.810801" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:12:05.811035" 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-10-20T23:12:05.810629" elapsed="0.000441"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:05.811692" 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-10-20T23:12:05.811345" elapsed="0.000408"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:05.813173" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:05.812813" elapsed="0.000420"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:12:05.813886" 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-10-20T23:12:05.813502" elapsed="0.000420"/>
</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-10-20T23:12:05.814379" elapsed="0.000030"/>
</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-10-20T23:12:05.814652" elapsed="0.000032"/>
</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-10-20T23:12:05.814913" elapsed="0.000055"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:12:05.814182" elapsed="0.000839"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:12:05.814014" elapsed="0.001056"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:12:05.815130" elapsed="0.000042"/>
</return>
<msg time="2026-10-20T23:12:05.815324" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:12:05.812299" elapsed="0.003078"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:05.811852" elapsed="0.003569"/>
</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 variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:05.815663" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:05.815454" elapsed="0.000283"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:05.811823" elapsed="0.003942"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:12:05.816611" 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-10-20T23:12:05.816008" elapsed="0.000640"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:12:05.816714" elapsed="0.000038"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:12:05.806521" elapsed="0.010505"/>
</kw>
<msg time="2026-10-20T23:12:05.817122" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:12:05.796977" elapsed="0.020339"/>
</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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:05.849518" elapsed="0.000070"/>
</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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:05.877977" elapsed="0.000066"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:05.905959" elapsed="0.000065"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:05.906503" 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-10-20T23:12:05.906809" 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-10-20T23:12:05.907887" elapsed="0.000034"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:05.907603" elapsed="0.000378"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:05.907534" elapsed="0.000485"/>
</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-10-20T23:12:05.909093" elapsed="0.000056"/>
</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-10-20T23:12:05.910110" elapsed="0.000054"/>
</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-10-20T23:12:05.911195" elapsed="0.000055"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:12:05.907482" elapsed="0.003815"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:12:05.907271" elapsed="0.004105"/>
</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>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:05.911602" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:05.912036" elapsed="0.000019"/>
</return>
<msg time="2026-10-20T23:12:05.912196" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:12:05.795233" elapsed="0.116989"/>
</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-10-20T23:12:05.914747" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:05.913958" elapsed="0.000908">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:12:05.915060" 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-10-20T23:12:05.913103" elapsed="0.002068"/>
</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-10-20T23:12:05.915819" elapsed="0.000095"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:05.915455" elapsed="0.000570"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:12:05.917671" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:12:05.916666" elapsed="0.001149"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:05.916106" elapsed="0.001874"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:05.915433" elapsed="0.002625"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:05.919106" 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-10-20T23:12:05.918228" elapsed="0.001013"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:12:05.919536" elapsed="0.000036"/>
</return>
<msg time="2026-10-20T23:12:05.919685" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:05.912606" elapsed="0.007102"/>
</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-10-20T23:12:05.922057" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:05.921255" elapsed="0.000921">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:12:05.922296" 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-10-20T23:12:05.920391" elapsed="0.002026"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:12:05.922845" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-10-20T23:12:05.922685" elapsed="0.000347"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:05.922665" elapsed="0.000449"/>
</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-10-20T23:12:05.923269" 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-10-20T23:12:05.923607" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:12:05.923859" elapsed="0.000017"/>
</return>
<msg time="2026-10-20T23:12:05.924011" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:05.920032" elapsed="0.004002"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:05.925818" 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-10-20T23:12:05.925283" elapsed="0.000627"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:05.926846" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:05.926348" elapsed="0.000601"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:05.932280" level="INFO">GET Request : url=http://10.30.171.157: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:05.932392" level="INFO">GET Response : url=http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 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;/rests/data/ietf-yang-library:modules-state&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;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:05.932639" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${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-10-20T23:12:05.927514" elapsed="0.005945">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:12:05.927124" elapsed="0.006483">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:12:05.934028" elapsed="0.000100"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:05.933741" elapsed="0.000485"/>
</branch>
<status status="FAIL" start="2026-10-20T23:12:05.927105" elapsed="0.007200">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:12:05.934850" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:05.935158" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:12:05.935121" elapsed="0.000188"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:05.935102" elapsed="0.000305"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:05.935552" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:12:05.935851" elapsed="0.000017"/>
</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-10-20T23:12:05.924428" elapsed="0.011565">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:05.936063" elapsed="0.000014"/>
</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-10-20T23:12:05.778720" elapsed="0.157432">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:12:05.936420" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:05.936235" elapsed="0.000250"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:05.936220" elapsed="0.000286"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:05.936535" elapsed="0.000013"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="FAIL" start="2026-10-20T23:12:05.777191" elapsed="0.159435">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:12:05.773997" elapsed="0.162690">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:12:05.773926" elapsed="0.162790">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:05.936946" elapsed="0.000024"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:05.937160" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:05.937324" elapsed="0.000019"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:05.937536" elapsed="0.000022"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:12:05.937738" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:05.937904" elapsed="0.000018"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:05.938160" elapsed="0.000018"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="NOT RUN" start="2026-10-20T23:12:05.938218" elapsed="0.000019"/>
</return>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-10-20T23:12:05.770682" elapsed="0.167634">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${raft_state}</value>
<status status="NOT RUN" start="2026-10-20T23:12:05.938389" elapsed="0.000015"/>
</return>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-10-20T23:12:05.769280" elapsed="0.169200">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:05.938703" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:05.938561" elapsed="0.000192"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:05.938908" elapsed="0.000074"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:05.938775" elapsed="0.000279"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:05.939221" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:05.939078" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:05.938545" elapsed="0.000748"/>
</if>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:12:05.768907" elapsed="0.170424">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:12:05.768514" elapsed="0.170884">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-20T23:12:05.939448" elapsed="0.000014"/>
</return>
<var>${leader_list}</var>
<var>${follower_list}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${shard_type}</arg>
<arg>validate=True</arg>
<arg>member_index_list=${member_index_list}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Return lists of Leader and Follower member indices from a given member index list
(or from the full list if empty). If ${shard_type} is not 'config', 'operational' is assumed.
If ${validate}, Fail if raft state is not Leader or Follower (for example on Candidate).
The biggest difference from Get_Leader_And_Followers_For_Shard
is that no check on number of Leaders is performed.</doc>
<status status="FAIL" start="2026-10-20T23:12:05.759148" elapsed="0.180389">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<kw name="Get Length" owner="BuiltIn">
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:05.939708" elapsed="0.000019"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:05.939923" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:05.939786" elapsed="0.000199"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:05.939771" elapsed="0.000235"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<arg>${leader_list}</arg>
<arg>${1}</arg>
<arg>Too many Leaders.</arg>
<doc>Verifies that the length of the given item is correct.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:05.940127" elapsed="0.000019"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:05.940300" elapsed="0.000018"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-20T23:12:05.940381" elapsed="0.000017"/>
</return>
<arg>shard_name=inventory</arg>
<arg>shard_type=config</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Get role lists, validate there is one leader, return the leader and list of followers.
Optionally, issue GET to a simple restconf URL to make sure subsequent operations will not encounter 503.</doc>
<status status="FAIL" start="2026-10-20T23:12:05.757523" elapsed="0.182957">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<kw name="Get_Leader_And_Followers_For_Shard" owner="ClusterManagement">
<kw name="Get_State_Info_For_Shard" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:06.946291" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:12:06.945449" elapsed="0.000922"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:12:06.947422" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:12:06.946764" elapsed="0.000712"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:12:06.947569" elapsed="0.000069"/>
</return>
<msg time="2026-10-20T23:12:06.947859" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-10-20T23:12:06.944604" elapsed="0.003304"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list.</doc>
<status status="PASS" start="2026-10-20T23:12:06.948277" elapsed="0.000322"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:06.949651" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:12:06.948982" elapsed="0.000722"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:12:06.950569" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:12:06.950049" elapsed="0.000572"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:12:06.951472" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:12:06.950923" elapsed="0.000599"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:12:06.956649" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:12:06.956037" elapsed="0.000667"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:12:06.956797" elapsed="0.000059"/>
</return>
<msg time="2026-10-20T23:12:06.957404" 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-10-20T23:12:06.955274" elapsed="0.002189"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:12:06.991902" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/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 variable.</doc>
<status status="PASS" start="2026-10-20T23:12:06.991405" elapsed="0.000564"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:12:06.993050" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules.manganese/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-10-20T23:12:06.992709" elapsed="0.000439">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:12:06.993273" 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-10-20T23:12:06.992211" elapsed="0.001096"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:06.994068" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:06.993569" elapsed="0.000538"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:12:06.994532" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:12:06.994736" 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-10-20T23:12:06.994343" elapsed="0.000427"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:06.995423" 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-10-20T23:12:06.995079" elapsed="0.000405"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:06.997133" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:06.996766" elapsed="0.000429"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:12:06.997848" 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-10-20T23:12:06.997470" elapsed="0.000413"/>
</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-10-20T23:12:06.998330" elapsed="0.000048"/>
</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-10-20T23:12:06.998619" elapsed="0.000032"/>
</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-10-20T23:12:06.998882" elapsed="0.000028"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:12:06.998145" elapsed="0.000834"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:12:06.997975" elapsed="0.001045"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:12:06.999080" elapsed="0.000042"/>
</return>
<msg time="2026-10-20T23:12:06.999274" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:12:06.996244" elapsed="0.003064"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:06.995585" elapsed="0.003765"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:06.999624" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:06.999400" elapsed="0.000298"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:06.995555" elapsed="0.004172"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:12:07.000586" 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-10-20T23:12:06.999973" elapsed="0.000650"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:12:07.000687" elapsed="0.000038"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:12:06.990233" elapsed="0.010780"/>
</kw>
<msg time="2026-10-20T23:12:07.001109" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:12:06.980046" elapsed="0.021252"/>
</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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:07.034199" elapsed="0.000069"/>
</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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:07.062508" elapsed="0.000065"/>
</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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:07.090547" elapsed="0.000066"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:07.091212" 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-10-20T23:12:07.091531" 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-10-20T23:12:07.092481" elapsed="0.000036"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:07.092185" elapsed="0.000374"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:07.092115" elapsed="0.000482"/>
</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-10-20T23:12:07.093606" elapsed="0.000055"/>
</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-10-20T23:12:07.094650" elapsed="0.000056"/>
</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-10-20T23:12:07.095790" elapsed="0.000056"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:12:07.092063" elapsed="0.003830"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:12:07.091846" elapsed="0.004131"/>
</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>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:07.096202" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:07.096637" elapsed="0.000019"/>
</return>
<msg time="2026-10-20T23:12:07.096800" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:12:06.978238" elapsed="0.118588"/>
</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-10-20T23:12:07.099567" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:07.098609" elapsed="0.001085">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:12:07.099824" 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-10-20T23:12:07.097725" elapsed="0.002256"/>
</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-10-20T23:12:07.100650" elapsed="0.000097"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:07.100258" elapsed="0.000578"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:12:07.102286" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:12:07.101550" elapsed="0.000874"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:07.100918" elapsed="0.001597"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:07.100234" elapsed="0.002415"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:07.103698" 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-10-20T23:12:07.102824" elapsed="0.000985"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:12:07.104106" elapsed="0.000033"/>
</return>
<msg time="2026-10-20T23:12:07.104248" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:07.097323" elapsed="0.006948"/>
</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-10-20T23:12:07.106585" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:07.105814" elapsed="0.000886">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:12:07.106818" 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-10-20T23:12:07.105025" elapsed="0.001971"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:12:07.107630" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-10-20T23:12:07.107465" elapsed="0.000280"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:07.107241" elapsed="0.000584"/>
</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-10-20T23:12:07.107995" 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-10-20T23:12:07.108324" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:12:07.108589" elapsed="0.000017"/>
</return>
<msg time="2026-10-20T23:12:07.108722" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:07.104591" elapsed="0.004154"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:07.110578" 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-10-20T23:12:07.110056" elapsed="0.000615"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:07.111539" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:07.111037" elapsed="0.000592"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:07.116658" level="INFO">GET Request : url=http://10.30.171.157: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:07.116736" level="INFO">GET Response : url=http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 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;/rests/data/ietf-yang-library:modules-state&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;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:07.116996" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${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-10-20T23:12:07.112188" elapsed="0.005600">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:12:07.111803" elapsed="0.006148">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:12:07.118370" elapsed="0.000104"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:07.118085" elapsed="0.000486"/>
</branch>
<status status="FAIL" start="2026-10-20T23:12:07.111784" elapsed="0.006870">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:12:07.119198" elapsed="0.000027"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:07.119496" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:12:07.119459" elapsed="0.000133"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:07.119439" elapsed="0.000232"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:07.119868" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:12:07.120199" elapsed="0.000017"/>
</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-10-20T23:12:07.109214" elapsed="0.011094">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:07.120388" 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-10-20T23:12:06.962209" elapsed="0.158270">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:12:07.120722" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:07.120563" elapsed="0.000224"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:07.120547" elapsed="0.000261"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:07.120836" elapsed="0.000013"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="FAIL" start="2026-10-20T23:12:06.960789" elapsed="0.160136">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:12:06.957619" elapsed="0.163389">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:12:06.957570" elapsed="0.163471">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:07.121254" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:07.121484" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:07.121646" elapsed="0.000018"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:07.121841" elapsed="0.000022"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:12:07.122176" elapsed="0.000022"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:07.122342" elapsed="0.000030"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:07.122515" elapsed="0.000019"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="NOT RUN" start="2026-10-20T23:12:07.122573" elapsed="0.000014"/>
</return>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-10-20T23:12:06.954155" elapsed="0.168520">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${raft_state}</value>
<status status="NOT RUN" start="2026-10-20T23:12:07.122736" elapsed="0.000014"/>
</return>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-10-20T23:12:06.952387" elapsed="0.170438">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:07.123063" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:07.122909" elapsed="0.000205"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:07.123267" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:07.123135" elapsed="0.000180"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:07.123487" elapsed="0.000059"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:07.123336" elapsed="0.000241"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:07.122893" elapsed="0.000705"/>
</if>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:12:06.952035" elapsed="0.171601">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:12:06.951625" elapsed="0.172065">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-20T23:12:07.123739" elapsed="0.000014"/>
</return>
<var>${leader_list}</var>
<var>${follower_list}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${shard_type}</arg>
<arg>validate=True</arg>
<arg>member_index_list=${member_index_list}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Return lists of Leader and Follower member indices from a given member index list
(or from the full list if empty). If ${shard_type} is not 'config', 'operational' is assumed.
If ${validate}, Fail if raft state is not Leader or Follower (for example on Candidate).
The biggest difference from Get_Leader_And_Followers_For_Shard
is that no check on number of Leaders is performed.</doc>
<status status="FAIL" start="2026-10-20T23:12:06.943084" elapsed="0.180743">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<kw name="Get Length" owner="BuiltIn">
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:07.124015" elapsed="0.000020"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:07.124233" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:07.124095" elapsed="0.000185"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:07.124079" elapsed="0.000222"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<arg>${leader_list}</arg>
<arg>${1}</arg>
<arg>Too many Leaders.</arg>
<doc>Verifies that the length of the given item is correct.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:07.124443" elapsed="0.000019"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:07.124609" elapsed="0.000018"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-20T23:12:07.124667" elapsed="0.000013"/>
</return>
<arg>shard_name=inventory</arg>
<arg>shard_type=config</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Get role lists, validate there is one leader, return the leader and list of followers.
Optionally, issue GET to a simple restconf URL to make sure subsequent operations will not encounter 503.</doc>
<status status="FAIL" start="2026-10-20T23:12:06.941488" elapsed="0.183270">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<kw name="Get_Leader_And_Followers_For_Shard" owner="ClusterManagement">
<kw name="Get_State_Info_For_Shard" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:08.133312" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:12:08.129715" elapsed="0.003680"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:12:08.134403" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:12:08.133736" elapsed="0.000723"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:12:08.134552" elapsed="0.000068"/>
</return>
<msg time="2026-10-20T23:12:08.134841" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-10-20T23:12:08.128789" elapsed="0.006103"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list.</doc>
<status status="PASS" start="2026-10-20T23:12:08.135247" elapsed="0.000309"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:08.136624" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:12:08.135915" elapsed="0.000763"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:12:08.137558" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:12:08.137029" elapsed="0.000582"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:12:08.138453" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:12:08.137913" elapsed="0.000593"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:12:08.143199" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:12:08.142585" elapsed="0.000669"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:12:08.143344" elapsed="0.000079"/>
</return>
<msg time="2026-10-20T23:12:08.143630" 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-10-20T23:12:08.141849" elapsed="0.001831"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:12:08.176812" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/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 variable.</doc>
<status status="PASS" start="2026-10-20T23:12:08.176294" elapsed="0.000555"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:12:08.177857" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules.manganese/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-10-20T23:12:08.177568" elapsed="0.000419">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:12:08.178123" 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-10-20T23:12:08.177104" elapsed="0.001051"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:08.178865" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:08.178420" elapsed="0.000481"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:12:08.179341" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:12:08.179547" 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-10-20T23:12:08.179179" elapsed="0.000401"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:08.180203" 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-10-20T23:12:08.179839" elapsed="0.000423"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:08.181739" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:08.181415" elapsed="0.000380"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:12:08.182508" 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-10-20T23:12:08.182137" elapsed="0.000404"/>
</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-10-20T23:12:08.183061" 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-10-20T23:12:08.183308" elapsed="0.000030"/>
</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-10-20T23:12:08.183577" elapsed="0.000027"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:12:08.182752" elapsed="0.000896"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:12:08.182603" elapsed="0.001081"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:12:08.183736" elapsed="0.000036"/>
</return>
<msg time="2026-10-20T23:12:08.183911" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:12:08.180725" elapsed="0.003238"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:08.180367" elapsed="0.003636"/>
</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 variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:08.184231" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:08.184034" elapsed="0.000267"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:08.180325" elapsed="0.004002"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:12:08.185275" 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-10-20T23:12:08.184640" elapsed="0.000670"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:12:08.185389" 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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:12:08.175293" elapsed="0.010355"/>
</kw>
<msg time="2026-10-20T23:12:08.185736" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:12:08.166453" elapsed="0.019460"/>
</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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:08.217257" 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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:08.245214" 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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:08.273170" elapsed="0.000028"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:08.273600" 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-10-20T23:12:08.273903" 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-10-20T23:12:08.274811" elapsed="0.000038"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:08.274531" elapsed="0.000360"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:08.274463" elapsed="0.000606"/>
</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-10-20T23:12:08.276210" elapsed="0.000059"/>
</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-10-20T23:12:08.277317" elapsed="0.000078"/>
</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-10-20T23:12:08.278345" elapsed="0.000081"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:12:08.274418" elapsed="0.004061"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:12:08.274231" elapsed="0.004308"/>
</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>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:08.278764" elapsed="0.000022"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:08.279313" elapsed="0.000019"/>
</return>
<msg time="2026-10-20T23:12:08.279445" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:12:08.164908" elapsed="0.114562"/>
</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-10-20T23:12:08.281827" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:08.281086" elapsed="0.000878">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:12:08.282093" 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-10-20T23:12:08.280160" elapsed="0.002043"/>
</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-10-20T23:12:08.282829" elapsed="0.000275"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:08.282474" elapsed="0.000722"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:12:08.284582" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:12:08.283816" elapsed="0.000889"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:08.283275" elapsed="0.001519"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:08.282455" elapsed="0.002415"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:08.285932" 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-10-20T23:12:08.285156" elapsed="0.001035"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:12:08.286482" elapsed="0.000031"/>
</return>
<msg time="2026-10-20T23:12:08.286616" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:08.279795" elapsed="0.006873"/>
</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-10-20T23:12:08.289033" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:08.288218" elapsed="0.000935">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:12:08.289274" 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-10-20T23:12:08.287415" elapsed="0.001981"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:12:08.289805" elapsed="0.000024"/>
</return>
<status status="PASS" start="2026-10-20T23:12:08.289653" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:08.289634" elapsed="0.000399"/>
</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-10-20T23:12:08.290192" 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-10-20T23:12:08.290537" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:12:08.290792" elapsed="0.000017"/>
</return>
<msg time="2026-10-20T23:12:08.290923" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:08.287065" elapsed="0.003979"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:08.292774" 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-10-20T23:12:08.292252" elapsed="0.000612"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:08.293765" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:08.293259" elapsed="0.000594"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:08.299144" level="INFO">GET Request : url=http://10.30.171.157: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:08.299213" level="INFO">GET Response : url=http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 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;/rests/data/ietf-yang-library:modules-state&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;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:08.299461" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${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-10-20T23:12:08.294444" elapsed="0.005791">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:12:08.294054" elapsed="0.006339">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:12:08.300759" elapsed="0.000098"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:08.300527" elapsed="0.000456"/>
</branch>
<status status="FAIL" start="2026-10-20T23:12:08.294033" elapsed="0.007036">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:12:08.301575" elapsed="0.000026"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:08.301856" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:12:08.301820" elapsed="0.000163"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:08.301801" elapsed="0.000267"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:08.302214" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:12:08.302531" elapsed="0.000017"/>
</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-10-20T23:12:08.291421" elapsed="0.011217">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:08.302736" 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-10-20T23:12:08.148297" elapsed="0.154532">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:12:08.303124" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:08.302916" elapsed="0.000275"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:08.302900" elapsed="0.000314"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:08.303244" elapsed="0.000014"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="FAIL" start="2026-10-20T23:12:08.146899" elapsed="0.156439">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:12:08.143816" elapsed="0.159603">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:12:08.143779" elapsed="0.159669">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:08.303661" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:08.303861" elapsed="0.000019"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:08.304060" elapsed="0.000021"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:08.304264" elapsed="0.000022"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:12:08.304487" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:08.304652" elapsed="0.000020"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:08.304813" elapsed="0.000019"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="NOT RUN" start="2026-10-20T23:12:08.304871" elapsed="0.000014"/>
</return>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-10-20T23:12:08.140729" elapsed="0.164361">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${raft_state}</value>
<status status="NOT RUN" start="2026-10-20T23:12:08.305156" elapsed="0.000015"/>
</return>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-10-20T23:12:08.139333" elapsed="0.165912">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:08.305480" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:08.305324" elapsed="0.000206"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:08.305687" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:08.305551" elapsed="0.000184"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:08.305895" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:08.305756" elapsed="0.000208"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:08.305307" elapsed="0.000682"/>
</if>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:12:08.139012" elapsed="0.167015">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:12:08.138607" elapsed="0.167503">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-20T23:12:08.306158" elapsed="0.000014"/>
</return>
<var>${leader_list}</var>
<var>${follower_list}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${shard_type}</arg>
<arg>validate=True</arg>
<arg>member_index_list=${member_index_list}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Return lists of Leader and Follower member indices from a given member index list
(or from the full list if empty). If ${shard_type} is not 'config', 'operational' is assumed.
If ${validate}, Fail if raft state is not Leader or Follower (for example on Candidate).
The biggest difference from Get_Leader_And_Followers_For_Shard
is that no check on number of Leaders is performed.</doc>
<status status="FAIL" start="2026-10-20T23:12:08.127440" elapsed="0.178806">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<kw name="Get Length" owner="BuiltIn">
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:08.306429" elapsed="0.000020"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:08.306650" elapsed="0.000017"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:08.306507" elapsed="0.000188"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:08.306493" elapsed="0.000223"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<arg>${leader_list}</arg>
<arg>${1}</arg>
<arg>Too many Leaders.</arg>
<doc>Verifies that the length of the given item is correct.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:08.306836" elapsed="0.000018"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:08.307015" elapsed="0.000019"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-20T23:12:08.307073" elapsed="0.000013"/>
</return>
<arg>shard_name=inventory</arg>
<arg>shard_type=config</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Get role lists, validate there is one leader, return the leader and list of followers.
Optionally, issue GET to a simple restconf URL to make sure subsequent operations will not encounter 503.</doc>
<status status="FAIL" start="2026-10-20T23:12:08.125739" elapsed="0.181426">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<kw name="Get_Leader_And_Followers_For_Shard" owner="ClusterManagement">
<kw name="Get_State_Info_For_Shard" owner="ClusterManagement">
<kw name="List_Indices_Or_All" owner="ClusterManagement">
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:09.314682" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<arg>${given_list}</arg>
<arg>${ClusterManagement__member_index_list}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:12:09.313502" elapsed="0.001272"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:12:09.316038" level="INFO">${return_list_copy} = [1, 2, 3]</msg>
<var>${return_list_copy}</var>
<arg>@{return_list_reference}</arg>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:12:09.315246" elapsed="0.000855"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-20T23:12:09.316235" elapsed="0.000097"/>
</return>
<msg time="2026-10-20T23:12:09.316611" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list should not affect other lists.
Also note that this keyword does not consider empty list to be ${EMPTY}.</doc>
<status status="PASS" start="2026-10-20T23:12:09.312501" elapsed="0.004178"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list.</doc>
<status status="PASS" start="2026-10-20T23:12:09.317073" elapsed="0.000411"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:09.318728" level="INFO">${ds_type} = config</msg>
<var>${ds_type}</var>
<arg>'${shard_type}' != 'config'</arg>
<arg>operational</arg>
<arg>config</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="PASS" start="2026-10-20T23:12:09.317895" elapsed="0.000889"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:12:09.319781" level="INFO">${leader_list} = []</msg>
<var>${leader_list}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:12:09.319183" elapsed="0.000661"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-20T23:12:09.320817" level="INFO">${follower_list} = []</msg>
<var>${follower_list}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="PASS" start="2026-10-20T23:12:09.320218" elapsed="0.000667"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:12:09.326993" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:12:09.326271" elapsed="0.000781"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-20T23:12:09.327166" elapsed="0.000076"/>
</return>
<msg time="2026-10-20T23:12:09.327491" 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-10-20T23:12:09.325431" elapsed="0.002112"/>
</kw>
<if>
<branch type="IF" condition="${verify_restconf}">
<kw name="Get_As_Json_Templated" owner="TemplatedRequests">
<kw name="Get_Templated" owner="TemplatedRequests">
<kw name="Resolve_Text_From_Template_Folder" owner="TemplatedRequests">
<kw name="Run Keyword And Return If" owner="BuiltIn">
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:12:09.362382" level="INFO">${file_path_stream} = /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/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 variable.</doc>
<status status="PASS" start="2026-10-20T23:12:09.361839" elapsed="0.000586"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-20T23:12:09.363628" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules.manganese/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-10-20T23:12:09.363211" elapsed="0.000676">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules.manganese/location.uri' does not exist.</status>
</kw>
<msg time="2026-10-20T23:12:09.364073" 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-10-20T23:12:09.362659" elapsed="0.001449"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:09.364915" level="INFO">${file_path} = /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:09.364395" elapsed="0.000602"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-20T23:12:09.365480" level="INFO" html="true">Getting file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/location.uri"&gt;/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/location.uri&lt;/a&gt;'.</msg>
<msg time="2026-10-20T23:12:09.365745" 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-10-20T23:12:09.365257" elapsed="0.000523"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:09.366523" 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-10-20T23:12:09.366141" elapsed="0.000446"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:09.368288" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:09.367882" elapsed="0.000492"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-20T23:12:09.369221" 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-10-20T23:12:09.368660" elapsed="0.000597"/>
</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-10-20T23:12:09.369751" elapsed="0.000030"/>
</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-10-20T23:12:09.370077" elapsed="0.000036"/>
</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-10-20T23:12:09.370364" elapsed="0.000039"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-20T23:12:09.369555" elapsed="0.000912"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-20T23:12:09.369344" elapsed="0.001171"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-20T23:12:09.370577" elapsed="0.000040"/>
</return>
<msg time="2026-10-20T23:12:09.370773" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-20T23:12:09.367131" elapsed="0.003677"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:09.366698" elapsed="0.004163"/>
</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 variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.371161" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:09.370903" elapsed="0.000346"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:09.366661" elapsed="0.004628"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-20T23:12:09.372247" 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-10-20T23:12:09.371573" elapsed="0.000713"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-20T23:12:09.372365" elapsed="0.000041"/>
</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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="PASS" start="2026-10-20T23:12:09.360687" elapsed="0.011976"/>
</kw>
<msg time="2026-10-20T23:12:09.372781" 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>Conditionally runs the specified keyword and returns from the enclosing user keyword.</doc>
<status status="PASS" start="2026-10-20T23:12:09.352463" elapsed="0.020549"/>
</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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.404533" 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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.433398" 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/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name} exists. If yes read and Log contents of file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules.manganese/${file_name},
remove endline, perform safe substitution, return result.
If no do it with the default /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/libraries/../variables/restconf/modules/${file_name}.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.462533" elapsed="0.000143"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<var>${items}</var>
<doc>Creates and returns a list containing the given items.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.463469" elapsed="0.000028"/>
</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-10-20T23:12:09.463835" 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-10-20T23:12:09.465124" elapsed="0.000052"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:09.464668" elapsed="0.000554"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:09.464593" elapsed="0.000675"/>
</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-10-20T23:12:09.466313" elapsed="0.000079"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.467457" elapsed="0.000057"/>
</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-10-20T23:12:09.468514" elapsed="0.000058"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-20T23:12:09.464520" elapsed="0.004105"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-20T23:12:09.464215" elapsed="0.004476"/>
</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>Concatenates the given items together and returns the resulted string.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.469048" elapsed="0.000029"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:09.469514" elapsed="0.000025"/>
</return>
<msg time="2026-10-20T23:12:09.469765" level="INFO">${uri} = /rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${uri}</var>
<arg>folder=${folder}</arg>
<arg>base_name=location</arg>
<arg>extension=uri</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=True</arg>
<doc>Read a template from folder, strip endline, make changes according to mapping, return the result.
If ${iterations} value is present, put text together from "prolog", "item" and "epilog" parts,
where additional template variable ${i} goes from ${iter_start}, by one ${iterations} times.
Template variable ${j} is calculated as ${i} incremented by offset ${iter_j_offset} ( j = i + iter_j_offset )
used to create non uniform data in order to be able to validate UPDATE operations.
POST (as opposed to PUT) needs slightly different data, ${name_prefix} may be used to distinguish.
(Actually, it is GET who formats data differently when URI is a top-level container.)</doc>
<status status="PASS" start="2026-10-20T23:12:09.351208" elapsed="0.118587"/>
</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-10-20T23:12:09.472824" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:09.471870" elapsed="0.001168">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/jmespath.expr' does not exist.</status>
</kw>
<msg time="2026-10-20T23:12:09.473166" 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-10-20T23:12:09.470735" elapsed="0.002543"/>
</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-10-20T23:12:09.474010" elapsed="0.000100"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:09.473565" elapsed="0.000634"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-20T23:12:09.475765" 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 variable.</doc>
<status status="PASS" start="2026-10-20T23:12:09.474882" elapsed="0.001018"/>
</kw>
<status status="PASS" start="2026-10-20T23:12:09.474288" elapsed="0.001723"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:09.473544" elapsed="0.002543"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-20T23:12:09.477209" 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-10-20T23:12:09.476270" elapsed="0.001058"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-20T23:12:09.477635" elapsed="0.000039"/>
</return>
<msg time="2026-10-20T23:12:09.477781" level="INFO">${jmes_expression} = </msg>
<var>${jmes_expression}</var>
<arg>${folder}</arg>
<doc>Reads JMES path from file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:09.470268" elapsed="0.007536"/>
</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-10-20T23:12:09.480340" level="FAIL">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:09.479550" elapsed="0.000920">File '/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/test/csit/variables/restconf/modules/volatiles.list' does not exist.</status>
</kw>
<msg time="2026-10-20T23:12:09.480607" 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-10-20T23:12:09.478627" elapsed="0.002099"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-20T23:12:09.481224" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-10-20T23:12:09.481056" elapsed="0.000288"/>
</branch>
<status status="PASS" start="2026-10-20T23:12:09.481035" elapsed="0.000418"/>
</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-10-20T23:12:09.481614" 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-10-20T23:12:09.481984" elapsed="0.000024"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-20T23:12:09.482245" elapsed="0.000019"/>
</return>
<msg time="2026-10-20T23:12:09.482396" level="INFO">${volatiles_list} = </msg>
<var>${volatiles_list}</var>
<arg>${folder}</arg>
<doc>Reads Volatiles List from file /w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/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-10-20T23:12:09.478238" elapsed="0.004183"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:09.484690" 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-10-20T23:12:09.484118" elapsed="0.000666"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-20T23:12:09.485713" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-20T23:12:09.485166" elapsed="0.000645"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-20T23:12:09.491363" level="INFO">GET Request : url=http://10.30.171.157: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.34.2', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Authorization': 'Basic YWRtaW46YWRtaW4='} 
 body=None 
 </msg>
<msg time="2026-10-20T23:12:09.491445" level="INFO">GET Response : url=http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig 
 status=404, reason=Not Found 
 headers={'Cache-Control': 'must-revalidate,no-cache,no-store', 'Content-Type': 'text/html;charset=iso-8859-1', 'Content-Length': '405'} 
 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;/rests/data/ietf-yang-library:modules-state&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;default&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;

&lt;/body&gt;
&lt;/html&gt;
 
 </msg>
<msg time="2026-10-20T23:12:09.491678" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${response}</var>
<arg>${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-10-20T23:12:09.486412" elapsed="0.006186">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:12:09.486002" elapsed="0.006758">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:12:09.493162" elapsed="0.000101"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:09.492899" elapsed="0.000475"/>
</branch>
<status status="FAIL" start="2026-10-20T23:12:09.485981" elapsed="0.007483">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:12:09.494028" elapsed="0.000032"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:09.494323" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-10-20T23:12:09.494288" elapsed="0.000151"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:09.494266" elapsed="0.000262"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.494690" elapsed="0.000023"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-20T23:12:09.495020" elapsed="0.000018"/>
</return>
<var>${response_text}</var>
<arg>uri=${uri}</arg>
<arg>accept=${accept}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=${normalize_json}</arg>
<arg>jmes_path=${jmes_expression}</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>keys_with_volatiles=${volatiles_list}</arg>
<arg>log_response=${log_response}</arg>
<doc>GET data from given URI, check status code and return response text.
${accept} is a Python object with headers to use.
If ${normalize_json}, normalize as JSON text before returning.</doc>
<status status="FAIL" start="2026-10-20T23:12:09.483212" elapsed="0.011922">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:09.495262" elapsed="0.000017"/>
</return>
<var>${response_text}</var>
<arg>folder=${folder}</arg>
<arg>mapping=${mapping}</arg>
<arg>accept=${ACCEPT_EMPTY}</arg>
<arg>session=${session}</arg>
<arg>normalize_json=True</arg>
<arg>http_timeout=${http_timeout}</arg>
<arg>log_response=${log_response}</arg>
<doc>Resolve URI from folder, call Get_From_Uri, return response text.</doc>
<status status="FAIL" start="2026-10-20T23:12:09.333027" elapsed="0.162348">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</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-10-20T23:12:09.495635" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:09.495464" elapsed="0.000255"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:09.495447" elapsed="0.000294"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-20T23:12:09.495772" elapsed="0.000014"/>
</return>
<arg>session=${session}</arg>
<arg>folder=${RESTCONF_MODULES_DIR}</arg>
<arg>verify=False</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Add arguments sensible for JSON data, return Get_Templated response text.
Optionally, verification against JSON data (may be iterated) is called.
Only subset of JSON data is verified and returned if JMES path is specified in
file ${folder}/jmespath.expr.</doc>
<status status="FAIL" start="2026-10-20T23:12:09.331452" elapsed="0.164417">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-20T23:12:09.327718" elapsed="0.168234">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-20T23:12:09.327662" elapsed="0.168324">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</if>
<kw name="Resolve_Shard_Type_Class" owner="ClusterManagement">
<var>${type_class}</var>
<arg>shard_type=${shard_type}</arg>
<doc>Simple lookup for class name corresponding to desired type.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.496212" elapsed="0.000023"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.496459" elapsed="0.000022"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.496633" elapsed="0.000026"/>
</kw>
<kw name="Get_As_Json_From_Uri" owner="TemplatedRequests">
<var>${data_text}</var>
<arg>uri=${uri}</arg>
<arg>session=${session}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Specify JSON headers and return Get_From_Uri normalized response text.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.496859" elapsed="0.000022"/>
</kw>
<kw name="Json Parse From String" owner="Utils">
<var>${data_object}</var>
<arg>${data_text}</arg>
<doc>Parse given plain string into json (dictionary)</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.497208" elapsed="0.000023"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.497399" elapsed="0.000019"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${raft_property}</var>
<arg>${value}</arg>
<arg>${property}</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.497575" elapsed="0.000024"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="NOT RUN" start="2026-10-20T23:12:09.497650" elapsed="0.000017"/>
</return>
<var>${raft_state}</var>
<arg>RaftState</arg>
<arg>${shard_name}</arg>
<arg>${shard_type}</arg>
<arg>${member_index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft property.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-10-20T23:12:09.324113" elapsed="0.173638">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${raft_state}</value>
<status status="NOT RUN" start="2026-10-20T23:12:09.497815" elapsed="0.000018"/>
</return>
<var>${raft_state}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${ds_type}</arg>
<arg>member_index=${index}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Send request to Jolokia on indexed member, return extracted Raft status.
Optionally, check restconf works.</doc>
<status status="FAIL" start="2026-10-20T23:12:09.321905" elapsed="0.176003">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<if>
<branch type="IF" condition="'Follower' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${follower_list}</arg>
<arg>${index}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.498172" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:09.498011" elapsed="0.000214"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.498416" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:09.498254" elapsed="0.000212"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.498633" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:09.498489" elapsed="0.000198"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:09.497993" elapsed="0.000725"/>
</if>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-20T23:12:09.321558" elapsed="0.177206">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</iter>
<var>${index}</var>
<value>@{index_list}</value>
<status status="FAIL" start="2026-10-20T23:12:09.321056" elapsed="0.177768">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</for>
<return>
<value>${leader_list}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-20T23:12:09.498886" elapsed="0.000014"/>
</return>
<var>${leader_list}</var>
<var>${follower_list}</var>
<arg>shard_name=${shard_name}</arg>
<arg>shard_type=${shard_type}</arg>
<arg>validate=True</arg>
<arg>member_index_list=${member_index_list}</arg>
<arg>verify_restconf=${verify_restconf}</arg>
<arg>http_timeout=${http_timeout}</arg>
<doc>Return lists of Leader and Follower member indices from a given member index list
(or from the full list if empty). If ${shard_type} is not 'config', 'operational' is assumed.
If ${validate}, Fail if raft state is not Leader or Follower (for example on Candidate).
The biggest difference from Get_Leader_And_Followers_For_Shard
is that no check on number of Leaders is performed.</doc>
<status status="FAIL" start="2026-10-20T23:12:09.310891" elapsed="0.188142">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<kw name="Get Length" owner="BuiltIn">
<var>${leader_count}</var>
<arg>${leader_list}</arg>
<doc>Returns and logs the length of the given item as an integer.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.499230" elapsed="0.000021"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.499490" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-10-20T23:12:09.499312" elapsed="0.000236"/>
</branch>
<status status="NOT RUN" start="2026-10-20T23:12:09.499296" elapsed="0.000272"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<arg>${leader_list}</arg>
<arg>${1}</arg>
<arg>Too many Leaders.</arg>
<doc>Verifies that the length of the given item is correct.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.499696" elapsed="0.000019"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.499867" elapsed="0.000019"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-20T23:12:09.499926" elapsed="0.000029"/>
</return>
<arg>shard_name=inventory</arg>
<arg>shard_type=config</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Get role lists, validate there is one leader, return the leader and list of followers.
Optionally, issue GET to a simple restconf URL to make sure subsequent operations will not encounter 503.</doc>
<status status="FAIL" start="2026-10-20T23:12:09.308738" elapsed="0.191323">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<msg time="2026-10-20T23:12:09.500166" level="FAIL">Keyword 'ClusterManagement.Get_Leader_And_Followers_For_Shard' failed after retrying for 10 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</msg>
<var>${inv_conf_leader}</var>
<var>${inv_conf_followers_list}</var>
<arg>10s</arg>
<arg>1s</arg>
<arg>ClusterManagement.Get_Leader_And_Followers_For_Shard</arg>
<arg>shard_name=inventory</arg>
<arg>shard_type=config</arg>
<arg>member_index_list=${controller_index_list}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:11:58.698370" elapsed="10.801897">Keyword 'ClusterManagement.Get_Leader_And_Followers_For_Shard' failed after retrying for 10 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<kw name="Log" owner="BuiltIn">
<arg>config inventory Leader is ${inv_conf_leader} and followers are ${inv_conf_followers_list}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.500538" elapsed="0.000027"/>
</kw>
<return>
<value>${inv_conf_leader}</value>
<value>${inv_conf_followers_list}</value>
<status status="NOT RUN" start="2026-10-20T23:12:09.500606" elapsed="0.000014"/>
</return>
<var>${inventory_leader}</var>
<var>${inventory_followers}</var>
<doc>Check Status for Inventory Config shard in OpenFlow application.</doc>
<status status="FAIL" start="2026-10-20T23:11:58.696781" elapsed="10.803919">Keyword 'ClusterManagement.Get_Leader_And_Followers_For_Shard' failed after retrying for 10 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<kw name="Get From List" owner="Collections">
<var>${Follower_Node_1}</var>
<arg>${Inventory_Followers}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.500904" elapsed="0.000038"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${Follower_Node_2}</var>
<arg>${Inventory_Followers}</arg>
<arg>1</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.501129" elapsed="0.000021"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>${\n}</arg>
<doc>Logs the given message to the console.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.501316" elapsed="0.000021"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>The follower Node1 is ${Follower_Node_1}</arg>
<doc>Logs the given message to the console.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.501507" elapsed="0.000022"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>The follower Node2 is ${Follower_Node_2}</arg>
<doc>Logs the given message to the console.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.501683" elapsed="0.000019"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>The leader Node is ${Inventory_Leader}</arg>
<doc>Logs the given message to the console.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.501857" elapsed="0.000019"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${Follower_Node_1}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.502080" elapsed="0.000021"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${Follower_Node_2}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.502269" elapsed="0.000018"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${Inventory_Leader}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.502478" elapsed="0.000025"/>
</kw>
<doc>Find a leader and followers in the inventory config shard</doc>
<status status="FAIL" start="2026-10-20T23:11:58.695295" elapsed="10.807396">Keyword 'ClusterManagement.Get_Leader_And_Followers_For_Shard' failed after retrying for 10 seconds. The last error was: HTTPError: 404 Client Error: Not Found for url: http://10.30.171.157:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</test>
<test id="s1-t3" name="Start Mininet Connect To Follower Node1" line="66">
<kw name="Start Mininet Single Controller" owner="MininetKeywords">
<msg time="2026-10-20T23:12:09.505578" level="FAIL">Variable '${Follower_Node_1}' not found.</msg>
<var>${mininet_conn_id}</var>
<arg>${TOOLS_SYSTEM_IP}</arg>
<arg>${ODL_SYSTEM_${Follower_Node_1}_IP}</arg>
<arg>--topo linear,${switch_count}</arg>
<doc>Start Mininet with custom topology and connect to controller.</doc>
<status status="FAIL" start="2026-10-20T23:12:09.503872" elapsed="0.001750">Variable '${Follower_Node_1}' not found.</status>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${mininet_conn_id}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.505834" elapsed="0.000021"/>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>${mininet_timeout}</arg>
<arg>2s</arg>
<arg>ClusterOpenFlow.Verify_Switch_Connections_Running_On_Member</arg>
<arg>${switch_count}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.506075" elapsed="0.000021"/>
</kw>
<doc>Start mininet with connection to follower node1.</doc>
<status status="FAIL" start="2026-10-20T23:12:09.503172" elapsed="0.003057">Variable '${Follower_Node_1}' not found.</status>
</test>
<test id="s1-t4" name="Add Bulk Flow From Follower Node2" line="80">
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-10-20T23:12:09.507327" level="INFO">${config_datastore_write_start_time} = 2026-10-20 23:12:09.507</msg>
<var>${config_datastore_write_start_time}</var>
<arg>result_format=timestamp</arg>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-10-20T23:12:09.506995" elapsed="0.000380"/>
</kw>
<kw name="Add Bulk Flow In Node" owner="BulkomaticKeywords">
<msg time="2026-10-20T23:12:09.510428" level="FAIL">Variable '${temp_json_config_add}' not found.</msg>
<arg>${temp_json_config_add}</arg>
<arg>${Follower_Node_2}</arg>
<arg>${operation_timeout}</arg>
<doc>Add Bulk Flow in member ${controller_index} and wait until operation is completed.</doc>
<status status="FAIL" start="2026-10-20T23:12:09.508971" elapsed="0.001492">Variable '${temp_json_config_add}' not found.</status>
</kw>
<kw name="Get Current Date" owner="DateTime">
<var>${config_datastore_write_end_time}</var>
<arg>result_format=timestamp</arg>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.510650" elapsed="0.000022"/>
</kw>
<kw name="Subtract Date From Date" owner="DateTime">
<var>${config_datastore_write_time}</var>
<arg>${config_datastore_write_end_time}</arg>
<arg>${config_datastore_write_start_time}</arg>
<doc>Subtracts date from another date and returns time between.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.510835" elapsed="0.000019"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${config_datastore_write_rate}</var>
<arg>${flow_count_after_add} / ${config_datastore_write_time}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.511038" elapsed="0.000024"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${config_datastore_write_start_time}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.511249" elapsed="0.000020"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>${\n}</arg>
<doc>Logs the given message to the console.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.511432" elapsed="0.000020"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>The config_datastore_write_time is ${config_datastore_write_time}</arg>
<doc>Logs the given message to the console.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.511608" elapsed="0.000019"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>The config_datastore_write_rate is ${config_datastore_write_rate}</arg>
<doc>Logs the given message to the console.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.511790" elapsed="0.000020"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${config_datastore_write_time}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.512003" elapsed="0.000021"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${config_datastore_write_rate}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.512201" elapsed="0.000024"/>
</kw>
<doc>100K Flows (1K Flows per DPN) in 100 DPN added via Follower Node2 and verify it gets applied in all instances.</doc>
<status status="FAIL" start="2026-10-20T23:12:09.506434" elapsed="0.005906">Variable '${temp_json_config_add}' not found.</status>
</test>
<test id="s1-t5" name="Verify Flows In Switch" line="96">
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-10-20T23:12:09.513319" level="INFO">${Mininet_write_start_time} = 2026-10-20 23:12:09.513</msg>
<var>${Mininet_write_start_time}</var>
<arg>result_format=timestamp</arg>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-10-20T23:12:09.513087" elapsed="0.000259"/>
</kw>
<kw name="Verify Aggregate Flow From Mininet Session" owner="MininetKeywords">
<msg time="2026-10-20T23:12:09.514948" level="FAIL">Variable '${mininet_conn_id}' not found.</msg>
<arg>${mininet_conn_id}</arg>
<arg>${flow_count_after_add}</arg>
<arg>${operation_timeout}</arg>
<doc>Verify flow count per switch</doc>
<status status="FAIL" start="2026-10-20T23:12:09.513541" elapsed="0.001444">Variable '${mininet_conn_id}' not found.</status>
</kw>
<kw name="Get Current Date" owner="DateTime">
<var>${Mininet_write_end_time}</var>
<arg>result_format=timestamp</arg>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.515175" elapsed="0.000021"/>
</kw>
<kw name="Subtract Date From Date" owner="DateTime">
<var>${Mininet_write_time}</var>
<arg>${Mininet_write_end_time}</arg>
<arg>${config_datastore_write_start_time}</arg>
<doc>Subtracts date from another date and returns time between.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.515372" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${Mininet_write_rate}</var>
<arg>${flow_count_after_add} / ${Mininet_write_time}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.515551" elapsed="0.000018"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>${\n}</arg>
<doc>Logs the given message to the console.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.515733" elapsed="0.000025"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>The Mininet_write_time is ${Mininet_write_time}</arg>
<doc>Logs the given message to the console.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.515905" elapsed="0.000017"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>The Mininet_write_rate is ${Mininet_write_rate}</arg>
<doc>Logs the given message to the console.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.516100" elapsed="0.000019"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${Mininet_write_time}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.516305" elapsed="0.000019"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${Mininet_write_rate}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-10-20T23:12:09.516526" elapsed="0.000020"/>
</kw>
<doc>Verify 100K flows are installed in 10 switches.</doc>
<status status="FAIL" start="2026-10-20T23:12:09.512639" elapsed="0.004017">Variable '${mininet_conn_id}' not found.</status>
</test>
<test id="s1-t6" name="Verify Flows In Oper DS" line="114">
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:12:09.520969" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:12:09.519501" elapsed="0.001505">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:12:11.529005" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:12:11.525410" elapsed="0.003722">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:12:13.537184" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:12:13.533639" elapsed="0.003669">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:12:15.545523" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:12:15.541986" elapsed="0.003658">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:12:17.552832" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:12:17.549612" elapsed="0.003346">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:12:19.558199" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:12:19.555911" elapsed="0.002408">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:12:21.566672" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:12:21.562688" elapsed="0.004077">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:12:23.573811" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:12:23.570634" elapsed="0.003266">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:12:25.580823" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:12:25.577643" elapsed="0.003269">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:12:27.587909" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:12:27.584659" elapsed="0.003381">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:12:29.592809" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:12:29.590624" elapsed="0.002251">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:12:31.600576" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:12:31.596920" elapsed="0.003751">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:12:33.605676" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:12:33.603608" elapsed="0.002133">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:12:35.612913" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:12:35.609759" elapsed="0.003267">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:12:37.620050" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:12:37.616762" elapsed="0.003382">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:12:39.626962" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:12:39.623824" elapsed="0.003228">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:12:41.632663" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:12:41.630149" elapsed="0.002592">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:12:43.636497" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:12:43.634877" elapsed="0.001671">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:12:45.643865" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:12:45.640662" elapsed="0.003342">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:12:47.651771" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:12:47.648114" elapsed="0.003770">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:12:49.659201" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:12:49.655982" elapsed="0.003342">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:12:51.667165" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:12:51.663690" elapsed="0.003604">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:12:53.675556" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:12:53.671890" elapsed="0.003819">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:12:55.683117" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:12:55.679907" elapsed="0.003318">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:12:57.691074" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:12:57.687645" elapsed="0.003537">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:12:59.696576" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:12:59.694428" elapsed="0.002254">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:13:01.706377" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:13:01.703188" elapsed="0.003293">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:13:03.716488" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:13:03.712055" elapsed="0.004552">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:13:05.724296" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:13:05.721014" elapsed="0.003389">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:13:07.731845" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:13:07.728560" elapsed="0.003423">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:13:09.739240" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:13:09.736013" elapsed="0.003331">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:13:11.744773" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:13:11.742619" elapsed="0.002251">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:13:13.815091" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:13:13.747950" elapsed="0.067264">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:13:15.822605" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:13:15.819301" elapsed="0.003413">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:13:17.830002" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:13:17.826758" elapsed="0.003352">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:13:19.838531" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:13:19.834927" elapsed="0.003729">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:13:21.848501" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:13:21.844309" elapsed="0.004354">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:13:23.855984" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:13:23.852794" elapsed="0.003290">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:13:25.866244" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:13:25.861902" elapsed="0.004486">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:13:27.875848" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:13:27.871660" elapsed="0.004364">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:13:29.884753" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:13:29.880917" elapsed="0.003958">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:13:31.892293" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:13:31.889041" elapsed="0.003359">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:13:33.899710" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:13:33.896476" elapsed="0.003349">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:13:35.907052" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:13:35.903844" elapsed="0.003309">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:13:37.914822" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:13:37.911622" elapsed="0.003328">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:13:39.922129" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:13:39.918926" elapsed="0.003320">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:13:41.929418" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:13:41.926262" elapsed="0.003257">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:13:43.936781" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:13:43.933589" elapsed="0.003295">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:13:45.944198" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:13:45.940975" elapsed="0.003327">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:13:47.951567" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:13:47.948378" elapsed="0.003291">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:13:49.959381" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:13:49.956131" elapsed="0.003360">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:13:51.966800" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:13:51.963498" elapsed="0.003404">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:13:53.972220" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:13:53.970200" elapsed="0.002094">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:13:55.980220" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:13:55.976887" elapsed="0.003453">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:13:57.987545" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:13:57.984375" elapsed="0.003271">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:13:59.991590" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:13:59.990127" elapsed="0.001522">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:14:02.000256" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:14:01.996689" elapsed="0.003710">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:14:04.005842" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:14:04.003665" elapsed="0.002291">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:14:06.013047" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:14:06.009861" elapsed="0.003312">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:14:08.023127" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:14:08.018465" elapsed="0.004823">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:14:10.032431" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:14:10.028435" elapsed="0.004262">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:14:12.038149" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:14:12.036009" elapsed="0.002245">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:14:14.044201" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:14:14.042180" elapsed="0.002107">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:14:16.052155" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:14:16.048683" elapsed="0.003595">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:14:18.061787" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:14:18.057708" elapsed="0.004270">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:14:20.069236" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:14:20.066078" elapsed="0.003262">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:14:22.073449" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:14:22.071640" elapsed="0.001869">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:14:24.080763" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:14:24.077466" elapsed="0.003411">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:14:26.086179" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:14:26.083951" elapsed="0.002314">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:14:28.095290" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:14:28.091138" elapsed="0.004273">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:14:30.102384" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:14:30.099204" elapsed="0.003284">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:14:32.106110" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:14:32.104537" elapsed="0.001624">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:14:34.114084" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:14:34.110238" elapsed="0.003948">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:14:36.121898" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:14:36.118351" elapsed="0.003667">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:14:38.127719" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:14:38.125212" elapsed="0.002580">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:14:40.132179" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:14:40.130111" elapsed="0.002140">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:14:42.139141" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:14:42.135921" elapsed="0.003314">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:14:44.147315" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:14:44.143582" elapsed="0.003860">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:14:46.154227" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:14:46.151100" elapsed="0.003230">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:14:48.158024" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:14:48.156398" elapsed="0.001716">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:14:50.166401" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:14:50.162704" elapsed="0.003815">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:14:52.174649" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:14:52.170872" elapsed="0.003877">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:14:54.183388" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:14:54.179451" elapsed="0.004044">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:14:56.190310" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:14:56.187201" elapsed="0.003197">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:14:58.193943" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:14:58.192476" elapsed="0.001517">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:15:00.201380" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:15:00.198158" elapsed="0.003339">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:15:02.207287" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:15:02.204975" elapsed="0.002385">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:15:04.214839" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:15:04.211670" elapsed="0.003290">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:15:06.218677" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:15:06.217232" elapsed="0.001496">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:15:08.226803" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:15:08.223636" elapsed="0.003262">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:15:10.234874" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:15:10.231138" elapsed="0.003880">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:15:12.238602" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:15:12.237185" elapsed="0.001467">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:15:14.242613" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:15:14.241203" elapsed="0.001458">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:15:16.249605" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:15:16.246417" elapsed="0.003298">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:15:18.256884" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:15:18.253480" elapsed="0.003529">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:15:20.264260" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:15:20.260922" elapsed="0.003436">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:15:22.269060" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:15:22.266973" elapsed="0.002181">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:15:24.276336" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:15:24.273035" elapsed="0.003416">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:15:26.284186" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:15:26.280753" elapsed="0.003554">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:15:28.291653" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:15:28.288334" elapsed="0.003420">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:15:30.299001" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:15:30.295729" elapsed="0.003387">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:15:32.306974" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:15:32.303373" elapsed="0.003718">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:15:34.313847" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:15:34.310872" elapsed="0.003091">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:15:36.326026" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:15:36.320219" elapsed="0.005957">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:15:38.335531" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:15:38.331498" elapsed="0.004157">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:15:40.343470" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:15:40.339813" elapsed="0.003752">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:15:42.350465" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:15:42.347331" elapsed="0.003224">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:15:44.357991" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:15:44.354528" elapsed="0.003557">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:15:46.365921" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:15:46.362285" elapsed="0.003755">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:15:48.373035" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:15:48.369810" elapsed="0.003327">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:15:50.380666" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:15:50.377333" elapsed="0.003429">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:15:52.387615" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:15:52.384452" elapsed="0.003258">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:15:54.395057" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:15:54.391632" elapsed="0.003535">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:15:56.401868" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:15:56.398754" elapsed="0.003228">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:15:58.408767" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:15:58.405653" elapsed="0.003203">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:16:00.415560" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:16:00.412468" elapsed="0.003181">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:16:02.423014" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:16:02.419723" elapsed="0.003391">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:16:04.430728" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:16:04.427077" elapsed="0.003751">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:16:06.437735" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:16:06.434578" elapsed="0.003245">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:16:08.445399" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:16:08.441790" elapsed="0.003735">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:16:10.453024" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:16:10.449683" elapsed="0.003446">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:16:12.460110" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:16:12.456885" elapsed="0.003314">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:16:14.466701" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:16:14.463808" elapsed="0.002987">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:16:16.473628" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:16:16.470500" elapsed="0.003241">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:16:18.480989" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:16:18.477481" elapsed="0.003615">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:16:20.487888" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:16:20.484738" elapsed="0.003267">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:16:22.494833" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:16:22.491725" elapsed="0.003237">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:16:24.501734" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:16:24.498594" elapsed="0.003230">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:16:26.509499" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:16:26.506099" elapsed="0.003496">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:16:28.516538" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:16:28.513344" elapsed="0.003286">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:16:30.523418" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:16:30.520304" elapsed="0.003208">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:16:32.531660" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:16:32.527911" elapsed="0.003850">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:16:34.538641" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:16:34.535438" elapsed="0.003298">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:16:36.545573" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:16:36.542451" elapsed="0.003215">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:16:38.549664" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:16:38.547951" elapsed="0.001782">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:16:40.556624" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:16:40.553438" elapsed="0.003280">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:16:42.563488" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:16:42.560347" elapsed="0.003230">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:16:44.570537" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:16:44.567388" elapsed="0.003240">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:16:46.577665" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:16:46.574475" elapsed="0.003290">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:16:48.584973" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:16:48.581500" elapsed="0.003567">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:16:50.592224" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:16:50.589100" elapsed="0.003249">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:16:52.599072" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:16:52.595974" elapsed="0.003187">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:16:54.605259" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:16:54.602453" elapsed="0.002884">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:16:56.610091" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:16:56.607981" elapsed="0.002182">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:16:58.617037" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:16:58.613843" elapsed="0.003282">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:17:00.624774" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:17:00.621280" elapsed="0.003594">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:17:02.631915" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:17:02.628805" elapsed="0.003227">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:17:04.638830" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:17:04.635659" elapsed="0.003262">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:17:06.645979" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:17:06.642795" elapsed="0.003279">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:17:08.651853" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:17:08.649014" elapsed="0.002963">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:17:10.658793" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:17:10.655657" elapsed="0.003248">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:17:12.666995" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:17:12.663214" elapsed="0.003879">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:17:14.674253" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:17:14.671104" elapsed="0.003245">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:17:16.682169" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:17:16.678602" elapsed="0.003668">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:17:18.692630" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:17:18.687828" elapsed="0.004949">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:17:20.696975" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:17:20.695187" elapsed="0.001866">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:17:22.702646" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:17:22.700024" elapsed="0.002754">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:17:24.711296" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:17:24.707377" elapsed="0.004035">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:17:26.718616" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:17:26.715497" elapsed="0.003209">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:17:28.725612" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:17:28.722491" elapsed="0.003210">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:17:30.729140" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:17:30.727664" elapsed="0.001544">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:17:32.737015" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:17:32.733240" elapsed="0.003987">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:17:34.744702" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:17:34.741086" elapsed="0.003715">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:17:36.749593" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:17:36.747400" elapsed="0.002259">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:17:38.754714" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:17:38.752652" elapsed="0.002124">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:17:40.761748" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:17:40.758506" elapsed="0.003336">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:17:42.768705" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:17:42.765560" elapsed="0.003241">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:17:44.775626" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:17:44.772487" elapsed="0.003237">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:17:46.779095" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:17:46.777650" elapsed="0.001496">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:17:48.783858" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:17:48.781770" elapsed="0.002169">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:17:50.791552" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:17:50.788170" elapsed="0.003498">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:17:52.802624" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:17:52.797031" elapsed="0.005734">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:17:54.810664" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:17:54.807057" elapsed="0.003704">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:17:56.817832" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:17:56.814638" elapsed="0.003285">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:17:58.825125" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:17:58.821908" elapsed="0.003314">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:18:00.834268" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:18:00.829983" elapsed="0.004520">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:18:02.843154" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:18:02.839682" elapsed="0.003570">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:18:04.848170" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:18:04.846010" elapsed="0.002254">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:18:06.858616" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:18:06.853689" elapsed="0.005068">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:18:08.866053" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:18:08.862774" elapsed="0.003375">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:18:10.873028" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:18:10.869834" elapsed="0.003293">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:18:12.880015" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:18:12.876822" elapsed="0.003283">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:18:14.888008" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:18:14.884604" elapsed="0.003505">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:18:16.895104" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:18:16.891848" elapsed="0.003350">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:18:18.904007" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:18:18.899895" elapsed="0.004267">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:18:20.913498" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:18:20.909896" elapsed="0.003676">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:18:22.918713" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:18:22.916423" elapsed="0.002383">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:18:24.922684" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:18:24.921060" elapsed="0.001676">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:18:26.928247" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:18:26.925979" elapsed="0.002334">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:18:28.935349" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:18:28.932089" elapsed="0.003355">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:18:30.941493" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:18:30.938638" elapsed="0.002929">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:18:32.948461" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:18:32.945301" elapsed="0.003252">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:18:34.952387" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:18:34.950741" elapsed="0.001699">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:18:36.959544" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:18:36.956171" elapsed="0.003474">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:18:38.968515" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:18:38.964557" elapsed="0.004059">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:18:40.975625" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:18:40.972431" elapsed="0.003288">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:18:42.980160" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:18:42.978284" elapsed="0.001944">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:18:44.987050" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:18:44.983886" elapsed="0.003260">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:18:46.991972" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:18:46.989837" elapsed="0.002206">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:18:48.995780" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:18:48.994157" elapsed="0.001676">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-20T23:18:51.000561" level="FAIL">Variable '${flow_count_after_add}' not found.</msg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Check if number of Operational Flows on member of given index is equal to ${flow_count}.</doc>
<status status="FAIL" start="2026-10-20T23:18:50.998566" elapsed="0.002060">Variable '${flow_count_after_add}' not found.</status>
</kw>
<msg time="2026-10-20T23:18:51.000761" level="FAIL">Keyword 'ClusterOpenFlow.Check_Flows_Operational_Datastore_On_Member' failed after retrying for 6 minutes 40 seconds. The last error was: Variable '${flow_count_after_add}' not found.</msg>
<arg>${oper_ds_timeout}</arg>
<arg>2s</arg>
<arg>ClusterOpenFlow.Check_Flows_Operational_Datastore_On_Member</arg>
<arg>${flow_count_after_add}</arg>
<arg>${Inventory_Leader}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="FAIL" start="2026-10-20T23:12:09.517422" elapsed="401.483587">Keyword 'ClusterOpenFlow.Check_Flows_Operational_Datastore_On_Member' failed after retrying for 6 minutes 40 seconds. The last error was: Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Get Current Date" owner="DateTime">
<var>${oper_datastore_write_end_time}</var>
<arg>result_format=timestamp</arg>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:51.001317" elapsed="0.000034"/>
</kw>
<kw name="Subtract Date From Date" owner="DateTime">
<var>${oper_datastore_write_time}</var>
<arg>${oper_datastore_write_end_time}</arg>
<arg>${config_datastore_write_start_time}</arg>
<doc>Subtracts date from another date and returns time between.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:51.001561" elapsed="0.000026"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${oper_datastore_write_rate}</var>
<arg>${flow_count_after_add} / ${oper_datastore_write_time}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:51.001822" elapsed="0.000025"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>${\n}</arg>
<doc>Logs the given message to the console.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:51.002084" elapsed="0.000105"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>The oper_datastore_write_time is ${oper_datastore_write_time}</arg>
<doc>Logs the given message to the console.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:51.002411" elapsed="0.000027"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>The oper_datastore_write_rate is ${oper_datastore_write_rate}</arg>
<doc>Logs the given message to the console.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:51.002644" elapsed="0.000024"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${oper_datastore_write_time}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:51.002915" elapsed="0.000054"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${oper_datastore_write_rate}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:51.003214" elapsed="0.000024"/>
</kw>
<doc>Check Flows in Operational Datastore</doc>
<status status="FAIL" start="2026-10-20T23:12:09.516919" elapsed="401.486506">Keyword 'ClusterOpenFlow.Check_Flows_Operational_Datastore_On_Member' failed after retrying for 6 minutes 40 seconds. The last error was: Variable '${flow_count_after_add}' not found.</status>
</test>
<test id="s1-t7" name="Stop Mininet Connected To Follower Node1 After Reconcilliation" line="133">
<kw name="Stop Mininet And Exit" owner="MininetKeywords">
<msg time="2026-10-20T23:18:51.009353" level="FAIL">Variable '${mininet_conn_id}' not found.</msg>
<arg>${mininet_conn_id}</arg>
<doc>Stops Mininet and exits session ${mininet_conn}</doc>
<status status="FAIL" start="2026-10-20T23:18:51.007412" elapsed="0.001990">Variable '${mininet_conn_id}' not found.</status>
</kw>
<kw name="Wait Until Keyword Succeeds" owner="BuiltIn">
<arg>${mininet_timeout}</arg>
<arg>2s</arg>
<arg>ClusterOpenFlow.Verify_Switch_Connections_Running_On_Member</arg>
<arg>0</arg>
<arg>${Inventory_Leader}</arg>
<doc>Runs the specified keyword and retries if it fails.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:51.009662" elapsed="0.000028"/>
</kw>
<doc>Stop mininet and exit connection.</doc>
<status status="FAIL" start="2026-10-20T23:18:51.004275" elapsed="0.005569">Variable '${mininet_conn_id}' not found.</status>
</test>
<test id="s1-t8" name="Delete All Flows From Follower Node2" line="143">
<kw name="Get Current Date" owner="DateTime">
<msg time="2026-10-20T23:18:51.011970" level="INFO">${config_datastore_delete_start_time} = 2026-10-20 23:18:51.012</msg>
<var>${config_datastore_delete_start_time}</var>
<arg>result_format=timestamp</arg>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="PASS" start="2026-10-20T23:18:51.011259" elapsed="0.000763"/>
</kw>
<kw name="Delete Bulk Flow In Node" owner="BulkomaticKeywords">
<msg time="2026-10-20T23:18:51.016147" level="FAIL">Variable '${temp_json_config_del}' not found.</msg>
<arg>${temp_json_config_del}</arg>
<arg>${Follower_Node_2}</arg>
<arg>${operation_timeout}</arg>
<doc>Delete Bulk Flow in member ${controller_index} and wait until operation is completed.</doc>
<status status="FAIL" start="2026-10-20T23:18:51.014258" elapsed="0.001935">Variable '${temp_json_config_del}' not found.</status>
</kw>
<kw name="Get Current Date" owner="DateTime">
<var>${config_datastore_delete_end_time}</var>
<arg>result_format=timestamp</arg>
<doc>Returns current local or UTC time with an optional increment.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:51.016455" elapsed="0.000026"/>
</kw>
<kw name="Subtract Date From Date" owner="DateTime">
<var>${config_datastore_delete_time}</var>
<arg>${config_datastore_delete_end_time}</arg>
<arg>${config_datastore_delete_start_time}</arg>
<doc>Subtracts date from another date and returns time between.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:51.016708" elapsed="0.000024"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${config_datastore_delete_rate}</var>
<arg>${flow_count_after_add} / ${config_datastore_delete_time}</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:51.017001" elapsed="0.000026"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>${\n}</arg>
<doc>Logs the given message to the console.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:51.017237" elapsed="0.000023"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>The config_datastore_delete_time is ${config_datastore_delete_time}</arg>
<doc>Logs the given message to the console.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:51.017461" elapsed="0.000023"/>
</kw>
<kw name="Log To Console" owner="BuiltIn">
<arg>The config_datastore_delete_rate is ${config_datastore_delete_rate}</arg>
<doc>Logs the given message to the console.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:51.017678" elapsed="0.000024"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${config_datastore_delete_time}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:51.017969" elapsed="0.000025"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<arg>${config_datastore_delete_rate}</arg>
<doc>Makes the variable available everywhere within the scope of the current suite.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:51.018172" elapsed="0.000020"/>
</kw>
<doc>100K Flows deleted via Follower Node2 and verify it gets applied in all instances.</doc>
<status status="FAIL" start="2026-10-20T23:18:51.010446" elapsed="0.007866">Variable '${temp_json_config_del}' not found.</status>
</test>
<test id="s1-t9" name="Log Results And Determine Status" line="161">
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-20T23:18:51.019275" level="INFO" html="true">Appended to file '&lt;a href="file:///w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/rate.csv"&gt;/w/workspace/openflowplugin-csit-3node-clustering-perf-bulkomatic-only-manganese/rate.csv&lt;/a&gt;'.</msg>
<arg>${rate_results_file}</arg>
<arg>Config DS,OVS Switch,Operational DS\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="PASS" start="2026-10-20T23:18:51.018924" elapsed="0.000405"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-20T23:18:51.020822" level="FAIL">Variable '${config_datastore_write_rate}' not found.</msg>
<arg>${rate_results_file}</arg>
<arg>${config_datastore_write_rate},${Mininet_write_rate},${oper_datastore_write_rate}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="FAIL" start="2026-10-20T23:18:51.019474" elapsed="0.001385">Variable '${config_datastore_write_rate}' not found.</status>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<arg>${time_results_file}</arg>
<arg>Config DS,OVS Switch,Operational DS\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:51.021035" elapsed="0.000020"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<arg>${time_results_file}</arg>
<arg>${config_datastore_write_time},${Mininet_write_time},${oper_datastore_write_time}\n</arg>
<doc>Appends the given content to the specified file.</doc>
<status status="NOT RUN" start="2026-10-20T23:18:51.021421" elapsed="0.000023"/>
</kw>
<doc>Log results for plotting.</doc>
<status status="FAIL" start="2026-10-20T23:18:51.018578" elapsed="0.002980">Variable '${config_datastore_write_rate}' not found.</status>
</test>
<kw name="Delete All Sessions" owner="RequestsLibrary" type="TEARDOWN">
<msg time="2026-10-20T23:18:51.022388" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects </doc>
<status status="PASS" start="2026-10-20T23:18:51.022309" elapsed="0.000192"/>
</kw>
<doc>Test suite for 3Node Cluster - 100K flows and 10 DPNs in Cluster Scale Up scenario</doc>
<status status="FAIL" start="2026-10-20T23:11:57.424254" elapsed="413.598278"/>
</suite>
<statistics>
<total>
<stat pass="0" fail="9" skip="0">All Tests</stat>
</total>
<tag>
</tag>
<suite>
<stat name="openflowplugin-clustering-perf-bulkomatic.txt" id="s1" pass="0" fail="9" skip="0">openflowplugin-clustering-perf-bulkomatic.txt</stat>
</suite>
</statistics>
<errors>
</errors>
</robot>
