<?xml version="1.0" encoding="UTF-8"?>
<robot generator="Robot 7.5 (Python 3.11.10 on linux)" generated="2026-10-18T01:16:10.370511" 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-18T01:16:10.990016" 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-18T01:16:10.988521" elapsed="0.001535"/>
</kw>
<if>
<branch type="IF" condition="${already_done}">
<return>
<status status="NOT RUN" start="2026-10-18T01:16:10.990264" elapsed="0.000019"/>
</return>
<status status="NOT RUN" start="2026-10-18T01:16:10.990163" elapsed="0.000163"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:10.990136" elapsed="0.000217"/>
</if>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-18T01:16:10.990888" 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-18T01:16:10.990557" elapsed="0.000378"/>
</kw>
<kw name="Get Variable Value" owner="BuiltIn">
<msg time="2026-10-18T01:16:10.991452" 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-18T01:16:10.991112" elapsed="0.000367"/>
</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-18T01:16:10.992133" elapsed="0.000310"/>
</kw>
<msg time="2026-10-18T01:16:10.992546" level="INFO">${status} = PASS</msg>
<msg time="2026-10-18T01:16:10.992593" 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-18T01:16:10.991652" elapsed="0.000966"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:10.993293" 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-18T01:16:10.992804" elapsed="0.000529"/>
</kw>
<kw name="ClusterManagement__Compute_Derived_Variables" owner="ClusterManagement">
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:10.994260" 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-18T01:16:10.993999" elapsed="0.000288"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:10.994729" 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-18T01:16:10.994469" elapsed="0.000287"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-18T01:16:10.995265" 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-18T01:16:10.994934" elapsed="0.000357"/>
</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-18T01:16:10.996335" elapsed="0.000205"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-18T01:16:10.996978" level="INFO">${member_ip} = 10.30.171.114</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-18T01:16:10.996695" elapsed="0.000307"/>
</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-18T01:16:10.997163" elapsed="0.000298"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-18T01:16:10.998191" 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-18T01:16:10.997912" elapsed="0.000304"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-18T01:16:10.998259" elapsed="0.000041"/>
</return>
<msg time="2026-10-18T01:16:10.998437" 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-18T01:16:10.997640" elapsed="0.000820"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-10-18T01:16:10.999046" level="INFO">Creating Session using : alias=ClusterManagement__session_1, url=http://10.30.171.114:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7448c6a3ee90&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-18T01:16:10.998695" elapsed="0.000504"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${session_list}</arg>
<arg>${session_alias}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="PASS" start="2026-10-18T01:16:10.999386" elapsed="0.000159"/>
</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-18T01:16:10.995757" elapsed="0.003844"/>
</kw>
<var name="${index}">1</var>
<status status="PASS" start="2026-10-18T01:16:10.995583" elapsed="0.004057"/>
</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-18T01:16:11.000394" elapsed="0.000157"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.000991" level="INFO">${member_ip} = 10.30.171.216</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-18T01:16:11.000709" elapsed="0.000307"/>
</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-18T01:16:11.001177" elapsed="0.000179"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.002251" 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-18T01:16:11.001984" elapsed="0.000291"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-18T01:16:11.002333" elapsed="0.000044"/>
</return>
<msg time="2026-10-18T01:16:11.002484" 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-18T01:16:11.001589" elapsed="0.000918"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-10-18T01:16:11.002980" level="INFO">Creating Session using : alias=ClusterManagement__session_2, url=http://10.30.171.216:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7448c6b07a10&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-18T01:16:11.002673" elapsed="0.000415"/>
</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-18T01:16:11.003246" elapsed="0.000180"/>
</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-18T01:16:10.999896" elapsed="0.003586"/>
</kw>
<var name="${index}">2</var>
<status status="PASS" start="2026-10-18T01:16:10.999730" elapsed="0.003791"/>
</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-18T01:16:11.004209" elapsed="0.000177"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.004818" level="INFO">${member_ip} = 10.30.171.70</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-18T01:16:11.004538" elapsed="0.000304"/>
</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-18T01:16:11.005000" elapsed="0.000164"/>
</kw>
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.005930" 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-18T01:16:11.005663" elapsed="0.000292"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-18T01:16:11.005996" elapsed="0.000028"/>
</return>
<msg time="2026-10-18T01:16:11.006123" 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-18T01:16:11.005358" elapsed="0.000788"/>
</kw>
<kw name="Create Session" owner="RequestsLibrary">
<msg time="2026-10-18T01:16:11.006653" level="INFO">Creating Session using : alias=ClusterManagement__session_3, url=http://10.30.171.70:8181, headers={},                     cookies={}, auth=&lt;requests.auth.HTTPBasicAuth object at 0x7448c6a5af90&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-18T01:16:11.006323" elapsed="0.000442"/>
</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-18T01:16:11.006920" elapsed="0.000153"/>
</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-18T01:16:11.003763" elapsed="0.003363"/>
</kw>
<var name="${index}">3</var>
<status status="PASS" start="2026-10-18T01:16:11.003600" elapsed="0.003564"/>
</iter>
<var>${index}</var>
<value>1</value>
<value>${int_of_members+1}</value>
<status status="PASS" start="2026-10-18T01:16:10.995381" elapsed="0.011811"/>
</for>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.007727" 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-18T01:16:11.007400" elapsed="0.000366"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.008269" level="INFO">${ClusterManagement__index_to_ip_mapping} = {1: '10.30.171.114', 2: '10.30.171.216', 3: '10.30.171.70'}</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-18T01:16:11.007945" elapsed="0.000378"/>
</kw>
<kw name="Set Suite Variable" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.008819" 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-18T01:16:11.008515" elapsed="0.000342"/>
</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-18T01:16:10.993589" elapsed="0.015320"/>
</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-18T01:16:10.987901" elapsed="0.021060"/>
</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-18T01:16:11.017841" elapsed="0.000167"/>
</kw>
<msg time="2026-10-18T01:16:11.018054" 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-18T01:16:11.017259" elapsed="0.000849"/>
</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-18T01:16:11.016844" elapsed="0.001331"/>
</kw>
<msg time="2026-10-18T01:16:11.018216" 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-18T01:16:11.013839" elapsed="0.004420"/>
</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-18T01:16:11.013450" elapsed="0.004888"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.019218" 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-18T01:16:11.018975" elapsed="0.000284"/>
</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-18T01:16:11.022130" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<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-18T01:16:11.021798" elapsed="0.000357"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.022630" 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-18T01:16:11.022301" elapsed="0.000353"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-18T01:16:11.022695" elapsed="0.000027"/>
</return>
<msg time="2026-10-18T01:16:11.022823" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list 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-18T01:16:11.021452" elapsed="0.001393"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list.</doc>
<status status="PASS" start="2026-10-18T01:16:11.022989" elapsed="0.000128"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.023744" 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-18T01:16:11.023276" elapsed="0.000494"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.024146" 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-18T01:16:11.023917" elapsed="0.000253"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.024562" 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-18T01:16:11.024306" elapsed="0.000280"/>
</kw>
<for flavor="IN">
<iter>
<kw name="Get_Raft_State_Of_Shard_At_Member" owner="ClusterManagement">
<kw name="Get_Raft_Property_From_Shard_Member" owner="ClusterManagement">
<kw name="Resolve_Http_Session_For_Member" owner="ClusterManagement">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.026685" 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-18T01:16:11.026416" elapsed="0.000298"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-18T01:16:11.026756" elapsed="0.000028"/>
</return>
<msg time="2026-10-18T01:16:11.026884" 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-18T01:16:11.026064" elapsed="0.000845"/>
</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-18T01:16:11.043991" 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-18T01:16:11.043685" elapsed="0.000333"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-18T01:16:11.044772" 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-18T01:16:11.044537" elapsed="0.000362">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-18T01:16:11.044986" 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-18T01:16:11.044169" elapsed="0.000845"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.045562" 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-18T01:16:11.045216" elapsed="0.000371"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-18T01:16:11.045868" 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-18T01:16:11.046005" 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-18T01:16:11.045750" elapsed="0.000279"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.046474" 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-18T01:16:11.046220" elapsed="0.000296"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.047423" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-18T01:16:11.047166" elapsed="0.000299"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.047883" 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-18T01:16:11.047634" elapsed="0.000273"/>
</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-18T01:16:11.048197" 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-18T01:16:11.048399" elapsed="0.000024"/>
</kw>
<kw name="Set To Dictionary" owner="Collections">
<arg>${encoded_mapping}</arg>
<arg>${key}</arg>
<arg>${encoded_value}</arg>
<doc>Adds the given `key_value_pairs` and/or `items` to the `dictionary`.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:11.048576" elapsed="0.000019"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-18T01:16:11.048071" elapsed="0.000556"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-18T01:16:11.047950" elapsed="0.000705"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-18T01:16:11.048695" elapsed="0.000028"/>
</return>
<msg time="2026-10-18T01:16:11.048827" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-18T01:16:11.046831" elapsed="0.002019"/>
</kw>
<status status="PASS" start="2026-10-18T01:16:11.046580" elapsed="0.002298"/>
</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-18T01:16:11.049045" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:11.048902" elapsed="0.000191"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:11.046561" elapsed="0.002553"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.049692" 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-18T01:16:11.049270" elapsed="0.000448"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-18T01:16:11.049763" elapsed="0.000029"/>
</return>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/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-18T01:16:11.043157" elapsed="0.006709"/>
</kw>
<msg time="2026-10-18T01:16:11.049948" 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-18T01:16:11.038352" elapsed="0.011666"/>
</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-18T01:16:11.054961" 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-18T01:16:11.059855" elapsed="0.000067"/>
</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-18T01:16:11.064880" elapsed="0.000120"/>
</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-18T01:16:11.065833" elapsed="0.000066"/>
</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-18T01:16:11.066775" elapsed="0.000064"/>
</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-18T01:16:11.067434" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:11.067254" elapsed="0.000234"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:11.067223" elapsed="0.000307"/>
</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-18T01:16:11.067740" elapsed="0.000020"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:11.067969" elapsed="0.000020"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:11.068176" elapsed="0.000020"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-18T01:16:11.067135" elapsed="0.001099"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-18T01:16:11.066949" elapsed="0.001323"/>
</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-18T01:16:11.069115" elapsed="0.000062"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:11.069273" elapsed="0.000031"/>
</return>
<msg time="2026-10-18T01:16:11.069631" 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-18T01:16:11.036542" elapsed="0.033128"/>
</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-18T01:16:11.072106" 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-18T01:16:11.071860" elapsed="0.000326">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-18T01:16:11.072386" 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-18T01:16:11.071139" elapsed="0.001361"/>
</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-18T01:16:11.073197" elapsed="0.000069"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:11.072644" elapsed="0.000700"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.074381" 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-18T01:16:11.073882" elapsed="0.000545"/>
</kw>
<status status="PASS" start="2026-10-18T01:16:11.073505" elapsed="0.000986"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:11.072593" elapsed="0.001962"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.076160" 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-18T01:16:11.075447" elapsed="0.000825"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-18T01:16:11.076391" elapsed="0.000044"/>
</return>
<msg time="2026-10-18T01:16:11.076598" 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-18T01:16:11.070094" elapsed="0.006541"/>
</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-18T01:16:11.078973" 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-18T01:16:11.078766" elapsed="0.000272">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-18T01:16:11.079238" 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-18T01:16:11.078131" elapsed="0.001312"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-18T01:16:11.079929" elapsed="0.000068"/>
</return>
<status status="PASS" start="2026-10-18T01:16:11.079593" elapsed="0.000449"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:11.079541" elapsed="0.000566"/>
</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-18T01:16:11.080888" elapsed="0.000065"/>
</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-18T01:16:11.081829" elapsed="0.000063"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-18T01:16:11.081977" elapsed="0.000028"/>
</return>
<msg time="2026-10-18T01:16:11.082192" 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-18T01:16:11.076991" elapsed="0.005238"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.085602" 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-18T01:16:11.084997" elapsed="0.000716"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.087032" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-18T01:16:11.086534" elapsed="0.000608"/>
</kw>
<if>
<branch type="IF" condition="&quot;&quot;&quot;${http_timeout}&quot;&quot;&quot; == &quot;&quot;&quot;${EMPTY}&quot;&quot;&quot;">
<kw name="GET On Session" owner="RequestsLibrary">
<msg time="2026-10-18T01:16:11.586246" level="INFO">GET Request : url=http://10.30.171.114: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-18T01:16:11.586528" level="INFO">GET Response : url=http://10.30.171.114: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-18T01:16:11.586968" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:11.087944" elapsed="0.501095">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-18T01:16:11.087280" elapsed="0.502133">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:11.590545" elapsed="0.000169"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:11.589602" elapsed="0.001280"/>
</branch>
<status status="FAIL" start="2026-10-18T01:16:11.087230" elapsed="0.503802">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:11.592999" elapsed="0.000162"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:11.593895" elapsed="0.000063"/>
</return>
<status status="NOT RUN" start="2026-10-18T01:16:11.593564" elapsed="0.000484"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:11.593441" elapsed="0.000746"/>
</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-18T01:16:11.596163" elapsed="0.000166"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-18T01:16:11.596599" elapsed="0.000063"/>
</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-18T01:16:11.082645" elapsed="0.514285">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:11.597467" elapsed="0.000038"/>
</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-18T01:16:11.029078" elapsed="0.568614">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:11.598484" elapsed="0.000055"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:11.597968" elapsed="0.000669"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:11.597930" elapsed="0.000757"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:11.598761" elapsed="0.000031"/>
</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-18T01:16:11.028469" elapsed="0.570505">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-18T01:16:11.026979" elapsed="0.572142">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-18T01:16:11.026956" elapsed="0.572230">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:11.599822" elapsed="0.000051"/>
</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-18T01:16:11.600299" elapsed="0.000118"/>
</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-18T01:16:11.600750" elapsed="0.000043"/>
</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-18T01:16:11.601197" 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-18T01:16:11.601704" elapsed="0.000058"/>
</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-18T01:16:11.602087" 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-18T01:16:11.602509" elapsed="0.000045"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="NOT RUN" start="2026-10-18T01:16:11.602645" elapsed="0.000032"/>
</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-18T01:16:11.025574" elapsed="0.577284">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${raft_state}</value>
<status status="NOT RUN" start="2026-10-18T01:16:11.602994" elapsed="0.000043"/>
</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-18T01:16:11.024956" elapsed="0.578245">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:11.603737" elapsed="0.000041"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:11.603427" elapsed="0.000420"/>
</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-18T01:16:11.604419" elapsed="0.000047"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:11.603894" elapsed="0.000641"/>
</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-18T01:16:11.604893" elapsed="0.000040"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:11.604582" elapsed="0.000414"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:11.603390" elapsed="0.001652"/>
</if>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-18T01:16:11.024807" elapsed="0.580325">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:11.024630" elapsed="0.580626">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:11.605410" elapsed="0.000034"/>
</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-18T01:16:11.020844" elapsed="0.584770">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:11.606077" elapsed="0.000044"/>
</kw>
<if>
<branch type="IF" condition="${leader_count} &lt; 1">
<kw name="Fail" owner="BuiltIn">
<arg>No leader found.</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:11.606629" elapsed="0.000043"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:11.606254" elapsed="0.000482"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:11.606221" elapsed="0.000562"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<arg>${leader_list}</arg>
<arg>${1}</arg>
<arg>Too many Leaders.</arg>
<doc>Verifies that the length of the given item is correct.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:11.607057" elapsed="0.000041"/>
</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-18T01:16:11.607475" elapsed="0.000044"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-18T01:16:11.607610" elapsed="0.000031"/>
</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-18T01:16:11.020132" elapsed="0.587680">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<var name="${shard_name}">inventory</var>
<status status="FAIL" start="2026-10-18T01:16:11.019928" elapsed="0.588024">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:11.019815" elapsed="0.588249">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:11.019485" elapsed="0.588771">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:11.608776" elapsed="0.000050"/>
</kw>
<doc>Check Status for all shards in OpenFlow application.</doc>
<status status="FAIL" start="2026-10-18T01:16:11.009617" elapsed="0.599391">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:11.609513" elapsed="0.000046"/>
</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-18T01:16:11.609924" elapsed="0.000040"/>
</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-18T01:16:11.610388" elapsed="0.000045"/>
</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-18T01:16:11.610942" elapsed="0.000048"/>
</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-18T01:16:11.611509" elapsed="0.000048"/>
</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-18T01:16:11.612056" 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-18T01:16:11.612574" elapsed="0.000045"/>
</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-18T01:16:11.612995" elapsed="0.000039"/>
</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-18T01:16:11.613475" elapsed="0.000045"/>
</kw>
<doc>Check Status for all shards in OpenFlow application and set the logs across cluster nodes.</doc>
<status status="FAIL" start="2026-10-18T01:16:11.009026" elapsed="0.604789">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:11.623125" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<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-18T01:16:11.622300" elapsed="0.000884"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.624172" 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-18T01:16:11.623564" elapsed="0.000661"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-18T01:16:11.624337" elapsed="0.000159"/>
</return>
<msg time="2026-10-18T01:16:11.624734" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list 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-18T01:16:11.621514" elapsed="0.003270"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list.</doc>
<status status="PASS" start="2026-10-18T01:16:11.625107" elapsed="0.000356"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.626564" 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-18T01:16:11.625827" elapsed="0.000793"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.627504" 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-18T01:16:11.626942" elapsed="0.000615"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.628446" 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-18T01:16:11.627877" elapsed="0.000623"/>
</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-18T01:16:11.632084" 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-18T01:16:11.631705" elapsed="0.000413"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-18T01:16:11.632175" elapsed="0.000036"/>
</return>
<msg time="2026-10-18T01:16:11.632361" 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-18T01:16:11.631228" elapsed="0.001183"/>
</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-18T01:16:11.655027" 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-18T01:16:11.654603" elapsed="0.000461"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-18T01:16:11.656152" 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-18T01:16:11.655804" elapsed="0.000454">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-18T01:16:11.656389" 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-18T01:16:11.655275" elapsed="0.001139"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.656889" 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-18T01:16:11.656580" elapsed="0.000334"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-18T01:16:11.657189" 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-18T01:16:11.657327" 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-18T01:16:11.657073" elapsed="0.000278"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.657798" 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-18T01:16:11.657571" elapsed="0.000267"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.658785" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-18T01:16:11.658552" elapsed="0.000273"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.659254" 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-18T01:16:11.658999" elapsed="0.000279"/>
</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-18T01:16:11.659596" elapsed="0.000019"/>
</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-18T01:16:11.659775" 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-18T01:16:11.659961" elapsed="0.000019"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-18T01:16:11.659469" elapsed="0.000543"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-18T01:16:11.659337" elapsed="0.000703"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-18T01:16:11.660115" elapsed="0.000028"/>
</return>
<msg time="2026-10-18T01:16:11.660247" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-18T01:16:11.658139" elapsed="0.002132"/>
</kw>
<status status="PASS" start="2026-10-18T01:16:11.657898" elapsed="0.002400"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:11.660499" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:11.660339" elapsed="0.000211"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:11.657881" elapsed="0.002688"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.661100" 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-18T01:16:11.660718" elapsed="0.000407"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-18T01:16:11.661168" 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-18T01:16:11.653645" elapsed="0.007742"/>
</kw>
<msg time="2026-10-18T01:16:11.661455" 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-18T01:16:11.646564" elapsed="0.015009"/>
</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-18T01:16:11.688083" elapsed="0.000038"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/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-18T01:16:11.714237" 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-18T01:16:11.740263" elapsed="0.000025"/>
</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-18T01:16:11.740819" 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-18T01:16:11.741104" 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-18T01:16:11.741968" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:11.741705" elapsed="0.000335"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:11.741640" elapsed="0.000436"/>
</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-18T01:16:11.743127" elapsed="0.000052"/>
</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-18T01:16:11.744119" elapsed="0.000053"/>
</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-18T01:16:11.745146" elapsed="0.000052"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-18T01:16:11.741594" elapsed="0.003647"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-18T01:16:11.741425" elapsed="0.003876"/>
</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-18T01:16:11.745545" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:11.745937" elapsed="0.000018"/>
</return>
<msg time="2026-10-18T01:16:11.746105" 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-18T01:16:11.645653" elapsed="0.100478"/>
</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-18T01:16:11.748606" 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-18T01:16:11.747761" elapsed="0.000963">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-18T01:16:11.748842" 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-18T01:16:11.746961" elapsed="0.001981"/>
</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-18T01:16:11.749558" elapsed="0.000090"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:11.749182" elapsed="0.000550"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.751070" 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-18T01:16:11.750294" elapsed="0.000890"/>
</kw>
<status status="PASS" start="2026-10-18T01:16:11.749805" elapsed="0.001464"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:11.749163" elapsed="0.002191"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.752239" 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-18T01:16:11.751538" elapsed="0.000817"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-18T01:16:11.752709" elapsed="0.000033"/>
</return>
<msg time="2026-10-18T01:16:11.752844" 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-18T01:16:11.746614" elapsed="0.006253"/>
</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-18T01:16:11.755003" 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-18T01:16:11.754212" elapsed="0.000901">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-18T01:16:11.755227" 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-18T01:16:11.753492" elapsed="0.001854"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-18T01:16:11.755750" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-10-18T01:16:11.755602" elapsed="0.000257"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:11.755583" elapsed="0.000348"/>
</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-18T01:16:11.756087" 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-18T01:16:11.756492" elapsed="0.000022"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-18T01:16:11.756733" elapsed="0.000016"/>
</return>
<msg time="2026-10-18T01:16:11.756864" 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-18T01:16:11.753138" elapsed="0.003749"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.758679" 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-18T01:16:11.758082" elapsed="0.000686"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:11.759591" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-18T01:16:11.759052" elapsed="0.000624"/>
</kw>
<if>
<branch type="IF" condition="&quot;&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-18T01:16:11.765505" level="INFO">GET Request : url=http://10.30.171.114: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-18T01:16:11.765579" level="INFO">GET Response : url=http://10.30.171.114: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-18T01:16:11.765819" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:11.760182" elapsed="0.006464">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-18T01:16:11.759836" elapsed="0.006942">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:11.767116" elapsed="0.000092"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:11.766897" elapsed="0.000400"/>
</branch>
<status status="FAIL" start="2026-10-18T01:16:11.759818" elapsed="0.007583">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:11.767845" elapsed="0.000024"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:11.768100" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-10-18T01:16:11.768068" elapsed="0.000123"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:11.768050" elapsed="0.000212"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:11.768459" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-18T01:16:11.768731" 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-18T01:16:11.757238" elapsed="0.011596">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:11.768899" 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-18T01:16:11.635543" elapsed="0.133444">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:11.769223" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:11.769068" elapsed="0.000218"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:11.769053" elapsed="0.000269"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:11.769352" elapsed="0.000050"/>
</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-18T01:16:11.634655" elapsed="0.134827">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-18T01:16:11.632498" elapsed="0.137045">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-18T01:16:11.632474" elapsed="0.137096">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:11.769776" 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-18T01:16:11.769984" 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-18T01:16:11.770146" 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-18T01:16:11.770356" elapsed="0.000043"/>
</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-18T01:16:11.770581" 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-18T01:16:11.770745" 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-18T01:16:11.770904" elapsed="0.000019"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="NOT RUN" start="2026-10-18T01:16:11.770993" 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-18T01:16:11.630543" elapsed="0.140544">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${raft_state}</value>
<status status="NOT RUN" start="2026-10-18T01:16:11.771148" 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-18T01:16:11.629409" elapsed="0.141830">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:11.771583" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:11.771333" elapsed="0.000300"/>
</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-18T01:16:11.771790" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:11.771655" elapsed="0.000182"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:11.771997" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:11.771858" elapsed="0.000184"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:11.771303" elapsed="0.000760"/>
</if>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-18T01:16:11.629010" elapsed="0.143090">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:11.628608" elapsed="0.143547">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:11.772203" 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-18T01:16:11.620081" elapsed="0.152216">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:11.772501" 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-18T01:16:11.772717" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:11.772578" elapsed="0.000189"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:11.772564" elapsed="0.000224"/>
</if>
<kw name="Length Should Be" owner="BuiltIn">
<arg>${leader_list}</arg>
<arg>${1}</arg>
<arg>Too many Leaders.</arg>
<doc>Verifies that the length of the given item is correct.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:11.772911" 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-18T01:16:11.773074" elapsed="0.000018"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-18T01:16:11.773130" 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-18T01:16:11.618613" elapsed="0.154607">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:12.779001" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<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-18T01:16:12.778078" elapsed="0.000988"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:12.780130" 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-18T01:16:12.779471" elapsed="0.000714"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-18T01:16:12.780279" elapsed="0.000124"/>
</return>
<msg time="2026-10-18T01:16:12.780637" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list 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-18T01:16:12.777210" elapsed="0.003477"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list.</doc>
<status status="PASS" start="2026-10-18T01:16:12.781017" elapsed="0.000330"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:12.782487" 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-18T01:16:12.781739" elapsed="0.000909"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:12.783559" 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-18T01:16:12.782978" elapsed="0.000636"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:12.784510" 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-18T01:16:12.783924" elapsed="0.000641"/>
</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-18T01:16:12.792681" 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-18T01:16:12.792022" elapsed="0.000715"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-18T01:16:12.792830" elapsed="0.000059"/>
</return>
<msg time="2026-10-18T01:16:12.793101" 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-18T01:16:12.791064" elapsed="0.002089"/>
</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-18T01:16:12.825242" 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-18T01:16:12.824816" elapsed="0.000463"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-18T01:16:12.826283" 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-18T01:16:12.825975" elapsed="0.000457">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-18T01:16:12.826554" 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-18T01:16:12.825529" elapsed="0.001057"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:12.827247" 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-18T01:16:12.826818" elapsed="0.000464"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-18T01:16:12.827755" 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-18T01:16:12.827950" 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-18T01:16:12.827587" elapsed="0.000395"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:12.828602" 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-18T01:16:12.828241" 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-18T01:16:12.830097" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-18T01:16:12.829604" elapsed="0.000551"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-18T01:16:12.830799" 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-18T01:16:12.830438" elapsed="0.000395"/>
</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-18T01:16:12.831229" 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-18T01:16:12.831516" 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-18T01:16:12.831765" elapsed="0.000027"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-18T01:16:12.831055" elapsed="0.000781"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-18T01:16:12.830894" elapsed="0.000980"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-18T01:16:12.831928" elapsed="0.000036"/>
</return>
<msg time="2026-10-18T01:16:12.832108" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-18T01:16:12.829092" elapsed="0.003049"/>
</kw>
<status status="PASS" start="2026-10-18T01:16:12.828756" elapsed="0.003423"/>
</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-18T01:16:12.832441" elapsed="0.000029"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:12.832210" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:12.828731" elapsed="0.003809"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-18T01:16:12.833357" 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-18T01:16:12.832750" elapsed="0.000662"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-18T01:16:12.833475" 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-18T01:16:12.823846" elapsed="0.009877"/>
</kw>
<msg time="2026-10-18T01:16:12.833814" 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-18T01:16:12.815842" elapsed="0.018141"/>
</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-18T01:16:12.862843" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/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-18T01:16:12.888905" 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-18T01:16:12.914903" 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-18T01:16:12.915288" elapsed="0.000032"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<var>${separator}</var>
<arg>'${extension}' != 'json'</arg>
<arg>${endline}</arg>
<arg>,${endline}</arg>
<doc>Sets variable based on the given condition.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:12.915596" 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-18T01:16:12.916547" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:12.916132" elapsed="0.000490"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:12.916069" elapsed="0.000587"/>
</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-18T01:16:12.917588" elapsed="0.000052"/>
</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-18T01:16:12.918627" elapsed="0.000052"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:12.919767" elapsed="0.000053"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-18T01:16:12.916028" elapsed="0.003837"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-18T01:16:12.915869" 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-18T01:16:12.920132" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:12.920549" elapsed="0.000017"/>
</return>
<msg time="2026-10-18T01:16:12.920660" 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-18T01:16:12.814361" elapsed="0.106323"/>
</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-18T01:16:12.922899" 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-18T01:16:12.922172" elapsed="0.000832">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-18T01:16:12.923117" 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-18T01:16:12.921439" elapsed="0.001778"/>
</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-18T01:16:12.923878" elapsed="0.000094"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:12.923550" elapsed="0.000505"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-18T01:16:12.925328" 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-18T01:16:12.924643" elapsed="0.000905"/>
</kw>
<status status="PASS" start="2026-10-18T01:16:12.924128" elapsed="0.001506"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:12.923530" elapsed="0.002174"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:12.926594" 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-18T01:16:12.925865" elapsed="0.000831"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-18T01:16:12.926950" elapsed="0.000034"/>
</return>
<msg time="2026-10-18T01:16:12.927084" 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-18T01:16:12.921026" elapsed="0.006081"/>
</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-18T01:16:12.929233" 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-18T01:16:12.928564" elapsed="0.000783">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-18T01:16:12.929547" 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-18T01:16:12.927817" elapsed="0.001831"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-18T01:16:12.930033" elapsed="0.000023"/>
</return>
<status status="PASS" start="2026-10-18T01:16:12.929888" elapsed="0.000254"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:12.929869" elapsed="0.000345"/>
</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-18T01:16:12.930393" 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-18T01:16:12.930705" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-18T01:16:12.930939" elapsed="0.000017"/>
</return>
<msg time="2026-10-18T01:16:12.931069" 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-18T01:16:12.927490" elapsed="0.003603"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:12.932993" 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-18T01:16:12.932523" elapsed="0.000557"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:12.934076" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-18T01:16:12.933579" 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-18T01:16:12.939956" level="INFO">GET Request : url=http://10.30.171.114: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-18T01:16:12.940028" level="INFO">GET Response : url=http://10.30.171.114: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-18T01:16:12.940274" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:12.934786" elapsed="0.006270">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-18T01:16:12.934405" elapsed="0.006828">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:12.941612" elapsed="0.000090"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:12.941390" elapsed="0.000402"/>
</branch>
<status status="FAIL" start="2026-10-18T01:16:12.934384" elapsed="0.007481">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:12.942356" elapsed="0.000052"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:12.942649" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-18T01:16:12.942612" elapsed="0.000131"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:12.942594" elapsed="0.000221"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:12.942955" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-18T01:16:12.943229" 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-18T01:16:12.931544" elapsed="0.011808">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:12.943450" 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-18T01:16:12.797935" elapsed="0.145606">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:12.943787" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:12.943630" elapsed="0.000220"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:12.943615" elapsed="0.000256"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:12.943900" 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-18T01:16:12.796533" elapsed="0.147459">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-18T01:16:12.793295" elapsed="0.150759">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-18T01:16:12.793259" elapsed="0.150823">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:12.944288" elapsed="0.000035"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${cluster_index}</var>
<arg>${member_index}+${NODE_ROLE_INDEX_START}-1</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:12.944532" 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-18T01:16:12.944695" 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-18T01:16:12.944891" 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-18T01:16:12.945090" 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-18T01:16:12.945252" 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-18T01:16:12.945532" elapsed="0.000020"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="NOT RUN" start="2026-10-18T01:16:12.945594" 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-18T01:16:12.789916" elapsed="0.155771">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${raft_state}</value>
<status status="NOT RUN" start="2026-10-18T01:16:12.945779" 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-18T01:16:12.785465" elapsed="0.160403">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:12.946087" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:12.945947" elapsed="0.000189"/>
</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-18T01:16:12.946293" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:12.946158" elapsed="0.000198"/>
</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-18T01:16:12.946575" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:12.946432" elapsed="0.000189"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:12.945931" elapsed="0.000711"/>
</if>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-18T01:16:12.785084" elapsed="0.161596">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:12.784683" elapsed="0.162051">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:12.946782" 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-18T01:16:12.775840" elapsed="0.171029">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:12.947039" elapsed="0.000018"/>
</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-18T01:16:12.947253" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:12.947116" elapsed="0.000196"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:12.947101" elapsed="0.000232"/>
</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-18T01:16:12.947472" 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-18T01:16:12.947636" elapsed="0.000018"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-18T01:16:12.947693" 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-18T01:16:12.774162" elapsed="0.173619">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:13.953475" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<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-18T01:16:13.952594" elapsed="0.000947"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:13.954557" 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-18T01:16:13.953881" elapsed="0.000731"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-18T01:16:13.954705" elapsed="0.000073"/>
</return>
<msg time="2026-10-18T01:16:13.955005" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list 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-18T01:16:13.951758" elapsed="0.003299"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list.</doc>
<status status="PASS" start="2026-10-18T01:16:13.955430" elapsed="0.000306"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:13.956833" 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-18T01:16:13.956100" elapsed="0.000790"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:13.957889" 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-18T01:16:13.957341" elapsed="0.000602"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:13.958815" 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-18T01:16:13.958251" elapsed="0.000618"/>
</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-18T01:16:13.964152" 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-18T01:16:13.963551" elapsed="0.000657"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-18T01:16:13.964323" elapsed="0.000089"/>
</return>
<msg time="2026-10-18T01:16:13.964631" 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-18T01:16:13.962798" elapsed="0.001885"/>
</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-18T01:16:13.998861" 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-18T01:16:13.998411" elapsed="0.000492"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-18T01:16:13.999909" 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-18T01:16:13.999606" elapsed="0.000400">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-18T01:16:14.000125" 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-18T01:16:13.999123" elapsed="0.001033"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:14.000876" 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-18T01:16:14.000438" elapsed="0.000474"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-18T01:16:14.001317" 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-18T01:16:14.001544" 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-18T01:16:14.001138" elapsed="0.000439"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:14.002154" 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-18T01:16:14.001840" elapsed="0.000372"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:14.003577" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-18T01:16:14.003214" elapsed="0.000421"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-18T01:16:14.004233" 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-18T01:16:14.003874" elapsed="0.000393"/>
</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-18T01:16:14.004725" 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-18T01:16:14.004980" 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-18T01:16:14.005228" elapsed="0.000027"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-18T01:16:14.004545" elapsed="0.000773"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-18T01:16:14.004354" elapsed="0.001004"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-18T01:16:14.005435" elapsed="0.000042"/>
</return>
<msg time="2026-10-18T01:16:14.005623" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-18T01:16:14.002742" elapsed="0.002914"/>
</kw>
<status status="PASS" start="2026-10-18T01:16:14.002352" elapsed="0.003345"/>
</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-18T01:16:14.005925" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:14.005727" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:14.002276" elapsed="0.003746"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-18T01:16:14.006820" 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-18T01:16:14.006231" elapsed="0.000626"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-18T01:16:14.006980" 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-18T01:16:13.997388" elapsed="0.009846"/>
</kw>
<msg time="2026-10-18T01:16:14.007610" 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-18T01:16:13.987803" elapsed="0.019986"/>
</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-18T01:16:14.036955" 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-18T01:16:14.063288" elapsed="0.000089"/>
</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-18T01:16:14.089645" 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-18T01:16:14.090033" 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-18T01:16:14.090324" 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-18T01:16:14.091152" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:14.090888" elapsed="0.000338"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:14.090825" elapsed="0.000434"/>
</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-18T01:16:14.092250" elapsed="0.000064"/>
</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-18T01:16:14.093204" elapsed="0.000052"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:14.094210" elapsed="0.000051"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-18T01:16:14.090783" elapsed="0.003554"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-18T01:16:14.090620" elapsed="0.003791"/>
</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-18T01:16:14.094626" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:14.095018" elapsed="0.000017"/>
</return>
<msg time="2026-10-18T01:16:14.095131" 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-18T01:16:13.986109" elapsed="0.109045"/>
</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-18T01:16:14.097468" 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-18T01:16:14.096750" elapsed="0.000829">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-18T01:16:14.097693" 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-18T01:16:14.095989" elapsed="0.001805"/>
</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-18T01:16:14.098548" elapsed="0.000093"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:14.098033" elapsed="0.000692"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-18T01:16:14.099994" 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-18T01:16:14.099308" elapsed="0.000800"/>
</kw>
<status status="PASS" start="2026-10-18T01:16:14.098797" elapsed="0.001395"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:14.098014" elapsed="0.002249"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:14.101206" 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-18T01:16:14.100500" elapsed="0.000821"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-18T01:16:14.101592" elapsed="0.000031"/>
</return>
<msg time="2026-10-18T01:16:14.101740" 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-18T01:16:14.095621" elapsed="0.006144"/>
</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-18T01:16:14.103977" 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-18T01:16:14.103233" elapsed="0.000847">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-18T01:16:14.104193" 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-18T01:16:14.102477" elapsed="0.001830"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-18T01:16:14.104772" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-10-18T01:16:14.104624" elapsed="0.000259"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:14.104605" elapsed="0.000350"/>
</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-18T01:16:14.105114" 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-18T01:16:14.105461" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-18T01:16:14.105699" elapsed="0.000016"/>
</return>
<msg time="2026-10-18T01:16:14.105830" 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-18T01:16:14.102040" elapsed="0.003813"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:14.107645" 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-18T01:16:14.107145" elapsed="0.000586"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:14.108563" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-18T01:16:14.108013" elapsed="0.000634"/>
</kw>
<if>
<branch type="IF" condition="&quot;&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-18T01:16:14.114735" level="INFO">GET Request : url=http://10.30.171.114: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-18T01:16:14.114809" level="INFO">GET Response : url=http://10.30.171.114: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-18T01:16:14.115019" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:14.109160" elapsed="0.006765">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-18T01:16:14.108806" elapsed="0.007283">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:14.116464" elapsed="0.000093"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:14.116211" elapsed="0.000435"/>
</branch>
<status status="FAIL" start="2026-10-18T01:16:14.108788" elapsed="0.007933">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:14.117182" elapsed="0.000024"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:14.117507" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-10-18T01:16:14.117473" elapsed="0.000127"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:14.117453" elapsed="0.000218"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:14.117813" elapsed="0.000019"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-18T01:16:14.118090" 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-18T01:16:14.106199" elapsed="0.011999">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:14.118266" 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-18T01:16:13.969410" elapsed="0.148991">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:14.118642" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:14.118488" elapsed="0.000220"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:14.118472" elapsed="0.000257"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:14.118757" 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-18T01:16:13.967957" elapsed="0.150889">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-18T01:16:13.964823" elapsed="0.154085">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-18T01:16:13.964786" elapsed="0.154150">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:14.119158" 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-18T01:16:14.119390" elapsed="0.000021"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:14.119557" 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-18T01:16:14.119754" 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-18T01:16:14.119956" 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-18T01:16:14.120121" 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-18T01:16:14.120280" elapsed="0.000030"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="NOT RUN" start="2026-10-18T01:16:14.120352" elapsed="0.000124"/>
</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-18T01:16:13.961653" elapsed="0.158905">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${raft_state}</value>
<status status="NOT RUN" start="2026-10-18T01:16:14.120652" 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-18T01:16:13.960219" elapsed="0.160522">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:14.120961" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:14.120820" elapsed="0.000191"/>
</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-18T01:16:14.121167" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:14.121032" 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-18T01:16:14.121403" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:14.121236" elapsed="0.000216"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:14.120805" elapsed="0.000667"/>
</if>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-18T01:16:13.959883" elapsed="0.161627">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:13.958974" elapsed="0.162590">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:14.121611" 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-18T01:16:13.950399" elapsed="0.171301">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:14.121871" 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-18T01:16:14.122088" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:14.121949" elapsed="0.000186"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:14.121934" elapsed="0.000221"/>
</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-18T01:16:14.122278" elapsed="0.000031"/>
</kw>
<kw name="Get From List" owner="Collections">
<var>${leader}</var>
<arg>${leader_list}</arg>
<arg>0</arg>
<doc>Returns the value specified with an `index` from `list`.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:14.122479" elapsed="0.000019"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-18T01:16:14.122537" 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-18T01:16:13.948747" elapsed="0.173883">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:15.128430" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<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-18T01:16:15.127542" elapsed="0.000953"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:15.129508" 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-18T01:16:15.128840" elapsed="0.000723"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-18T01:16:15.129655" elapsed="0.000071"/>
</return>
<msg time="2026-10-18T01:16:15.129953" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list 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-18T01:16:15.126684" elapsed="0.003319"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list.</doc>
<status status="PASS" start="2026-10-18T01:16:15.130354" elapsed="0.000341"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:15.131787" 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-18T01:16:15.131061" elapsed="0.000781"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:15.132755" 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-18T01:16:15.132168" elapsed="0.000640"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:15.133805" 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-18T01:16:15.133231" 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-18T01:16:15.139116" 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-18T01:16:15.138492" elapsed="0.000689"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-18T01:16:15.139313" elapsed="0.000100"/>
</return>
<msg time="2026-10-18T01:16:15.139641" 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-18T01:16:15.137731" elapsed="0.001961"/>
</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-18T01:16:15.173471" 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-18T01:16:15.172928" elapsed="0.000590"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-18T01:16:15.174534" 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-18T01:16:15.174196" elapsed="0.000434">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-18T01:16:15.174749" 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-18T01:16:15.173749" elapsed="0.001032"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:15.175511" 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-18T01:16:15.175011" elapsed="0.000535"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-18T01:16:15.175940" 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-18T01:16:15.176135" 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-18T01:16:15.175772" elapsed="0.000396"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:15.176781" 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-18T01:16:15.176470" elapsed="0.000367"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:15.178259" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-18T01:16:15.177939" elapsed="0.000396"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-18T01:16:15.178975" 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-18T01:16:15.178607" elapsed="0.000401"/>
</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-18T01:16:15.179440" 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-18T01:16:15.179692" 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-18T01:16:15.179940" elapsed="0.000029"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-18T01:16:15.179219" elapsed="0.000797"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-18T01:16:15.179068" elapsed="0.000986"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-18T01:16:15.180108" elapsed="0.000036"/>
</return>
<msg time="2026-10-18T01:16:15.180305" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-18T01:16:15.177264" elapsed="0.003075"/>
</kw>
<status status="PASS" start="2026-10-18T01:16:15.176922" elapsed="0.003476"/>
</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-18T01:16:15.180628" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:15.180429" elapsed="0.000269"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:15.176899" elapsed="0.003825"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-18T01:16:15.181504" 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-18T01:16:15.180931" elapsed="0.000608"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-18T01:16:15.181643" elapsed="0.000040"/>
</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-18T01:16:15.171978" elapsed="0.009919"/>
</kw>
<msg time="2026-10-18T01:16:15.181991" 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-18T01:16:15.162340" elapsed="0.019817"/>
</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-18T01:16:15.211757" 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-18T01:16:15.237871" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/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-18T01:16:15.263816" 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-18T01:16:15.264209" 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-18T01:16:15.264645" 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-18T01:16:15.265495" elapsed="0.000035"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:15.265198" elapsed="0.000377"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:15.265133" elapsed="0.000478"/>
</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-18T01:16:15.266648" elapsed="0.000052"/>
</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-18T01:16:15.267601" elapsed="0.000051"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:15.268627" elapsed="0.000053"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-18T01:16:15.265089" elapsed="0.003635"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-18T01:16:15.264923" elapsed="0.003858"/>
</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-18T01:16:15.268991" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:15.269407" elapsed="0.000018"/>
</return>
<msg time="2026-10-18T01:16:15.269530" 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-18T01:16:15.160859" elapsed="0.108695"/>
</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-18T01:16:15.271832" 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-18T01:16:15.271105" 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-18T01:16:15.272103" 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-18T01:16:15.270203" elapsed="0.002001"/>
</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-18T01:16:15.272873" elapsed="0.000090"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:15.272534" elapsed="0.000512"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-18T01:16:15.274314" 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-18T01:16:15.273637" elapsed="0.000897"/>
</kw>
<status status="PASS" start="2026-10-18T01:16:15.273118" elapsed="0.001501"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:15.272515" elapsed="0.002175"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:15.275583" 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-18T01:16:15.274850" elapsed="0.000835"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-18T01:16:15.275940" elapsed="0.000030"/>
</return>
<msg time="2026-10-18T01:16:15.276070" 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-18T01:16:15.269867" elapsed="0.006225"/>
</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-18T01:16:15.278250" 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-18T01:16:15.277575" elapsed="0.000875">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-18T01:16:15.278571" 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-18T01:16:15.276813" elapsed="0.001879"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-18T01:16:15.279090" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-10-18T01:16:15.278944" elapsed="0.000255"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:15.278926" elapsed="0.000346"/>
</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-18T01:16:15.279455" 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-18T01:16:15.279772" elapsed="0.000019"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-18T01:16:15.280006" elapsed="0.000016"/>
</return>
<msg time="2026-10-18T01:16:15.280135" 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-18T01:16:15.276486" elapsed="0.003672"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:15.282059" 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-18T01:16:15.281588" elapsed="0.000557"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:15.282984" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-18T01:16:15.282526" elapsed="0.000543"/>
</kw>
<if>
<branch type="IF" condition="&quot;&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-18T01:16:15.288645" level="INFO">GET Request : url=http://10.30.171.114: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-18T01:16:15.288713" level="INFO">GET Response : url=http://10.30.171.114: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-18T01:16:15.288923" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:15.283607" elapsed="0.006079">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-18T01:16:15.283229" elapsed="0.006589">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:15.290198" elapsed="0.000126"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:15.289968" elapsed="0.000471"/>
</branch>
<status status="FAIL" start="2026-10-18T01:16:15.283210" elapsed="0.007305">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:15.290960" elapsed="0.000029"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:15.291227" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-10-18T01:16:15.291193" elapsed="0.000142"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:15.291176" elapsed="0.000253"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:15.291571" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-18T01:16:15.291846" 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-18T01:16:15.280770" elapsed="0.011180">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:15.292017" 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-18T01:16:15.144475" elapsed="0.147629">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:15.292356" elapsed="0.000057"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:15.292185" elapsed="0.000270"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:15.292171" elapsed="0.000305"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:15.292505" 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-18T01:16:15.143025" elapsed="0.149568">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-18T01:16:15.139833" elapsed="0.152821">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-18T01:16:15.139796" elapsed="0.152885">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:15.292888" 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-18T01:16:15.293087" 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-18T01:16:15.293249" 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-18T01:16:15.293488" 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-18T01:16:15.293690" elapsed="0.000020"/>
</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-18T01:16:15.293854" 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-18T01:16:15.294014" elapsed="0.000021"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="NOT RUN" start="2026-10-18T01:16:15.294082" 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-18T01:16:15.136574" elapsed="0.157604">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${raft_state}</value>
<status status="NOT RUN" start="2026-10-18T01:16:15.294274" elapsed="0.000031"/>
</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-18T01:16:15.134753" elapsed="0.159736">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:15.294712" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:15.294573" elapsed="0.000188"/>
</branch>
<branch type="ELSE IF" condition="'Leader' == '${raft_state}'">
<kw name="Append To List" owner="Collections">
<arg>${leader_list}</arg>
<arg>${index}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:15.294918" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:15.294782" 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-18T01:16:15.295132" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:15.294987" elapsed="0.000192"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:15.294557" elapsed="0.000642"/>
</if>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-18T01:16:15.134407" elapsed="0.160830">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:15.133963" elapsed="0.161347">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:15.295359" elapsed="0.000033"/>
</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-18T01:16:15.125265" elapsed="0.170203">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:15.295639" 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-18T01:16:15.295856" elapsed="0.000024"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:15.295717" elapsed="0.000192"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:15.295702" elapsed="0.000227"/>
</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-18T01:16:15.296052" 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-18T01:16:15.296218" elapsed="0.000018"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-18T01:16:15.296274" 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-18T01:16:15.123662" elapsed="0.172733">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:16.302423" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<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-18T01:16:16.301532" elapsed="0.000957"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:16.303592" 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-18T01:16:16.302837" elapsed="0.000811"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-18T01:16:16.303741" elapsed="0.000083"/>
</return>
<msg time="2026-10-18T01:16:16.304061" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list 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-18T01:16:16.300656" elapsed="0.003464"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list.</doc>
<status status="PASS" start="2026-10-18T01:16:16.304527" elapsed="0.000307"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:16.306447" 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-18T01:16:16.305198" elapsed="0.001309"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:16.307408" 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-18T01:16:16.306839" elapsed="0.000627"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:16.308302" 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-18T01:16:16.307778" elapsed="0.000580"/>
</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-18T01:16:16.313269" 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-18T01:16:16.312675" elapsed="0.000678"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-18T01:16:16.313476" elapsed="0.000059"/>
</return>
<msg time="2026-10-18T01:16:16.313746" 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-18T01:16:16.311922" elapsed="0.001875"/>
</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-18T01:16:16.347746" 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-18T01:16:16.347294" elapsed="0.000489"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-18T01:16:16.348770" 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-18T01:16:16.348475" elapsed="0.000394">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-18T01:16:16.348988" 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-18T01:16:16.347993" elapsed="0.001026"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:16.349725" 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-18T01:16:16.349248" elapsed="0.000512"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-18T01:16:16.350151" 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-18T01:16:16.350394" 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-18T01:16:16.349985" elapsed="0.000444"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:16.351007" 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-18T01:16:16.350698" elapsed="0.000365"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:16.352346" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-18T01:16:16.352012" elapsed="0.000413"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-18T01:16:16.353024" 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-18T01:16:16.352661" 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-18T01:16:16.353570" 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-18T01:16:16.353819" 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-18T01:16:16.354082" elapsed="0.000033"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-18T01:16:16.353347" elapsed="0.000823"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-18T01:16:16.353139" elapsed="0.001077"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-18T01:16:16.354289" elapsed="0.000038"/>
</return>
<msg time="2026-10-18T01:16:16.354489" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-18T01:16:16.351535" elapsed="0.002995"/>
</kw>
<status status="PASS" start="2026-10-18T01:16:16.351147" elapsed="0.003424"/>
</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-18T01:16:16.354801" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:16.354602" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:16.351123" elapsed="0.003773"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-18T01:16:16.355693" 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-18T01:16:16.355104" elapsed="0.000624"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-18T01:16:16.355788" 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-18T01:16:16.346330" elapsed="0.009705"/>
</kw>
<msg time="2026-10-18T01:16:16.356171" 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-18T01:16:16.336545" elapsed="0.019844"/>
</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-18T01:16:16.385695" 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-18T01:16:16.413080" 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-18T01:16:16.439120" 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-18T01:16:16.439531" 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-18T01:16:16.439809" 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-18T01:16:16.440729" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:16.440460" elapsed="0.000343"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:16.440297" elapsed="0.000540"/>
</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-18T01:16:16.441761" elapsed="0.000051"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:16.442805" elapsed="0.000052"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:16.443738" elapsed="0.000052"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-18T01:16:16.440240" elapsed="0.003594"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-18T01:16:16.440080" elapsed="0.003814"/>
</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-18T01:16:16.444104" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:16.444630" elapsed="0.000017"/>
</return>
<msg time="2026-10-18T01:16:16.444741" 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-18T01:16:16.334952" elapsed="0.109813"/>
</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-18T01:16:16.446969" 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-18T01:16:16.446153" elapsed="0.000923">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-18T01:16:16.447189" 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-18T01:16:16.445424" elapsed="0.001878"/>
</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-18T01:16:16.447928" elapsed="0.000089"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:16.447559" elapsed="0.000542"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-18T01:16:16.449446" 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-18T01:16:16.448750" elapsed="0.000809"/>
</kw>
<status status="PASS" start="2026-10-18T01:16:16.448174" elapsed="0.001469"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:16.447540" elapsed="0.002174"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:16.450696" 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-18T01:16:16.449875" elapsed="0.000923"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-18T01:16:16.451051" elapsed="0.000030"/>
</return>
<msg time="2026-10-18T01:16:16.451182" 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-18T01:16:16.445072" elapsed="0.006132"/>
</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-18T01:16:16.453342" 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-18T01:16:16.452657" elapsed="0.000804">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-18T01:16:16.453578" 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-18T01:16:16.451821" elapsed="0.001858"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-18T01:16:16.454064" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-10-18T01:16:16.453918" elapsed="0.000257"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:16.453899" elapsed="0.000348"/>
</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-18T01:16:16.454489" 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-18T01:16:16.454804" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-18T01:16:16.455039" elapsed="0.000016"/>
</return>
<msg time="2026-10-18T01:16:16.455169" 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-18T01:16:16.451501" elapsed="0.003691"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:16.456915" 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-18T01:16:16.456349" elapsed="0.000651"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:16.457780" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-18T01:16:16.457300" elapsed="0.000565"/>
</kw>
<if>
<branch type="IF" condition="&quot;&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-18T01:16:16.463167" level="INFO">GET Request : url=http://10.30.171.114: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-18T01:16:16.463239" level="INFO">GET Response : url=http://10.30.171.114: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-18T01:16:16.463502" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:16.458447" elapsed="0.005776">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-18T01:16:16.458023" elapsed="0.006376">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:16.464898" elapsed="0.000091"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:16.464673" elapsed="0.000413"/>
</branch>
<status status="FAIL" start="2026-10-18T01:16:16.458005" elapsed="0.007155">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:16.465641" elapsed="0.000051"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:16.465935" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-10-18T01:16:16.465901" elapsed="0.000126"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:16.465883" elapsed="0.000216"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:16.466239" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-18T01:16:16.466550" 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-18T01:16:16.455559" elapsed="0.011096">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:16.466723" 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-18T01:16:16.318628" elapsed="0.148186">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:16.467050" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:16.466895" elapsed="0.000218"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:16.466880" elapsed="0.000254"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:16.467162" 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-18T01:16:16.317179" elapsed="0.150072">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-18T01:16:16.313937" elapsed="0.153388">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-18T01:16:16.313900" elapsed="0.153453">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:16.467577" 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-18T01:16:16.467771" 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-18T01:16:16.467931" 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-18T01:16:16.468126" 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-18T01:16:16.468335" 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-18T01:16:16.468518" 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-18T01:16:16.468709" elapsed="0.000028"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="NOT RUN" start="2026-10-18T01:16:16.468798" elapsed="0.000020"/>
</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-18T01:16:16.310772" elapsed="0.158159">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${raft_state}</value>
<status status="NOT RUN" start="2026-10-18T01:16:16.469017" elapsed="0.000022"/>
</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-18T01:16:16.309330" elapsed="0.159806">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:16.469543" elapsed="0.000060"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:16.469229" elapsed="0.000408"/>
</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-18T01:16:16.469797" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:16.469659" elapsed="0.000186"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:16.470007" elapsed="0.000021"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:16.469866" elapsed="0.000190"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:16.469213" elapsed="0.000864"/>
</if>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-18T01:16:16.308976" elapsed="0.161140">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:16.308586" elapsed="0.161586">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:16.470219" 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-18T01:16:16.298984" elapsed="0.171337">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:16.470512" 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-18T01:16:16.470727" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:16.470589" elapsed="0.000183"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:16.470575" 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-18T01:16:16.470915" 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-18T01:16:16.471081" elapsed="0.000017"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-18T01:16:16.471137" 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-18T01:16:16.297311" elapsed="0.173914">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:17.476934" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<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-18T01:16:17.476031" elapsed="0.000968"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:17.478012" 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-18T01:16:17.477392" elapsed="0.000675"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-18T01:16:17.478159" elapsed="0.000071"/>
</return>
<msg time="2026-10-18T01:16:17.478509" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list 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-18T01:16:17.475190" elapsed="0.003372"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list.</doc>
<status status="PASS" start="2026-10-18T01:16:17.478888" elapsed="0.000306"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:17.480305" 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-18T01:16:17.479611" elapsed="0.000776"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:17.481230" 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-18T01:16:17.480716" elapsed="0.000590"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:17.482149" 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-18T01:16:17.481643" elapsed="0.000558"/>
</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-18T01:16:17.487476" 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-18T01:16:17.486816" elapsed="0.000718"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-18T01:16:17.487627" elapsed="0.000060"/>
</return>
<msg time="2026-10-18T01:16:17.487995" 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-18T01:16:17.486034" elapsed="0.002013"/>
</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-18T01:16:17.521811" 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-18T01:16:17.521355" elapsed="0.000494"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-18T01:16:17.522846" 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-18T01:16:17.522553" elapsed="0.000387">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-18T01:16:17.523059" 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-18T01:16:17.522063" elapsed="0.001028"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:17.523805" 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-18T01:16:17.523349" elapsed="0.000491"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-18T01:16:17.524228" 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-18T01:16:17.524471" 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-18T01:16:17.524064" elapsed="0.000440"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:17.525071" 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-18T01:16:17.524765" elapsed="0.000362"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:17.526614" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-18T01:16:17.526073" elapsed="0.000601"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-18T01:16:17.527315" 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-18T01:16:17.526913" elapsed="0.000438"/>
</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-18T01:16:17.527766" 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-18T01:16:17.528016" 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-18T01:16:17.528265" elapsed="0.000044"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-18T01:16:17.527591" elapsed="0.000764"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-18T01:16:17.527433" elapsed="0.000980"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-18T01:16:17.528469" elapsed="0.000039"/>
</return>
<msg time="2026-10-18T01:16:17.528654" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-18T01:16:17.525609" elapsed="0.003078"/>
</kw>
<status status="PASS" start="2026-10-18T01:16:17.525215" elapsed="0.003512"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:17.528959" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:17.528758" elapsed="0.000272"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:17.525190" elapsed="0.003867"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-18T01:16:17.529843" 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-18T01:16:17.529283" elapsed="0.000596"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-18T01:16:17.529937" 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-18T01:16:17.520415" elapsed="0.009772"/>
</kw>
<msg time="2026-10-18T01:16:17.530290" 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-18T01:16:17.510839" elapsed="0.019654"/>
</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-18T01:16:17.559985" elapsed="0.000028"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${epilog}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${name_prefix}${base_name}.epilog.${extension}</arg>
<arg>mapping=${mapping}</arg>
<arg>percent_encode=${percent_encode}</arg>
<doc>Check if /w/workspace/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-18T01:16:17.585919" 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-18T01:16:17.611904" 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-18T01:16:17.612310" 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-18T01:16:17.612683" 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-18T01:16:17.613525" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:17.613229" elapsed="0.000368"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:17.613164" elapsed="0.000467"/>
</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-18T01:16:17.614667" elapsed="0.000052"/>
</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-18T01:16:17.615619" elapsed="0.000052"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:17.616648" elapsed="0.000053"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-18T01:16:17.613124" elapsed="0.003624"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-18T01:16:17.612964" elapsed="0.003841"/>
</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-18T01:16:17.617017" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:17.617439" elapsed="0.000017"/>
</return>
<msg time="2026-10-18T01:16:17.617550" 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-18T01:16:17.509314" elapsed="0.108261"/>
</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-18T01:16:17.619822" 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-18T01:16:17.619112" elapsed="0.000814">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-18T01:16:17.620040" 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-18T01:16:17.618210" elapsed="0.001931"/>
</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-18T01:16:17.620808" elapsed="0.000091"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:17.620473" elapsed="0.000541"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-18T01:16:17.622291" 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-18T01:16:17.621612" elapsed="0.000903"/>
</kw>
<status status="PASS" start="2026-10-18T01:16:17.621090" elapsed="0.001509"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:17.620454" elapsed="0.002216"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:17.623559" 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-18T01:16:17.622832" elapsed="0.000829"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-18T01:16:17.623916" elapsed="0.000030"/>
</return>
<msg time="2026-10-18T01:16:17.624046" 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-18T01:16:17.617885" elapsed="0.006184"/>
</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-18T01:16:17.626449" 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-18T01:16:17.625740" elapsed="0.000813">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-18T01:16:17.626668" 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-18T01:16:17.624792" elapsed="0.001976"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-18T01:16:17.627158" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-10-18T01:16:17.627005" elapsed="0.000274"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:17.626986" elapsed="0.000369"/>
</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-18T01:16:17.627550" 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-18T01:16:17.627864" elapsed="0.000019"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-18T01:16:17.628099" elapsed="0.000017"/>
</return>
<msg time="2026-10-18T01:16:17.628229" 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-18T01:16:17.624461" elapsed="0.003791"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:17.630128" 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-18T01:16:17.629661" elapsed="0.000554"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:17.631113" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-18T01:16:17.630651" elapsed="0.000547"/>
</kw>
<if>
<branch type="IF" condition="&quot;&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-18T01:16:17.636548" level="INFO">GET Request : url=http://10.30.171.114: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-18T01:16:17.636617" level="INFO">GET Response : url=http://10.30.171.114: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-18T01:16:17.636827" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:17.631743" elapsed="0.005839">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-18T01:16:17.631390" elapsed="0.006324">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:17.638052" elapsed="0.000091"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:17.637834" elapsed="0.000400"/>
</branch>
<status status="FAIL" start="2026-10-18T01:16:17.631357" elapsed="0.006966">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:17.638793" elapsed="0.000024"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:17.639089" elapsed="0.000014"/>
</return>
<status status="NOT RUN" start="2026-10-18T01:16:17.639053" elapsed="0.000130"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:17.639035" elapsed="0.000220"/>
</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-18T01:16:17.639434" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-18T01:16:17.639730" 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-18T01:16:17.628814" elapsed="0.011019">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:17.639902" 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-18T01:16:17.492801" elapsed="0.147192">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:17.640231" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:17.640076" elapsed="0.000232"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:17.640061" elapsed="0.000269"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:17.640359" elapsed="0.000052"/>
</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-18T01:16:17.491393" elapsed="0.149097">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-18T01:16:17.488190" elapsed="0.152362">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-18T01:16:17.488152" elapsed="0.152428">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:17.640787" 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-18T01:16:17.640987" 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-18T01:16:17.641151" 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-18T01:16:17.641380" elapsed="0.000023"/>
</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-18T01:16:17.641586" 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-18T01:16:17.641751" 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-18T01:16:17.641911" elapsed="0.000018"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="NOT RUN" start="2026-10-18T01:16:17.641969" 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-18T01:16:17.484483" elapsed="0.157577">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${raft_state}</value>
<status status="NOT RUN" start="2026-10-18T01:16:17.642127" 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-18T01:16:17.483061" elapsed="0.159152">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:17.642558" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:17.642306" elapsed="0.000304"/>
</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-18T01:16:17.642799" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:17.642632" 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-18T01:16:17.643010" elapsed="0.000017"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:17.642870" elapsed="0.000186"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:17.642289" elapsed="0.000787"/>
</if>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-18T01:16:17.482735" elapsed="0.160379">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:17.482324" elapsed="0.160843">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:17.643213" 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-18T01:16:17.473839" elapsed="0.169474">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:17.643501" 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-18T01:16:17.643717" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:17.643579" elapsed="0.000184"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:17.643565" 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-18T01:16:17.643906" 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-18T01:16:17.644077" elapsed="0.000018"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-18T01:16:17.644134" 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-18T01:16:17.472187" elapsed="0.172035">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:18.649846" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<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-18T01:16:18.648976" elapsed="0.000934"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:18.650953" 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-18T01:16:18.650252" elapsed="0.000756"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-18T01:16:18.651102" elapsed="0.000071"/>
</return>
<msg time="2026-10-18T01:16:18.651471" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list 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-18T01:16:18.648133" elapsed="0.003392"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list.</doc>
<status status="PASS" start="2026-10-18T01:16:18.651859" elapsed="0.000336"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:18.653824" 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-18T01:16:18.652607" elapsed="0.001275"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:18.654782" 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-18T01:16:18.654208" elapsed="0.000628"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:18.655717" 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-18T01:16:18.655147" elapsed="0.000624"/>
</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-18T01:16:18.660657" 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-18T01:16:18.660000" elapsed="0.000714"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-18T01:16:18.660807" elapsed="0.000060"/>
</return>
<msg time="2026-10-18T01:16:18.661083" 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-18T01:16:18.659226" elapsed="0.001908"/>
</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-18T01:16:18.694242" 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-18T01:16:18.693814" elapsed="0.000478"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-18T01:16:18.695249" 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-18T01:16:18.694963" elapsed="0.000397">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-18T01:16:18.695507" 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-18T01:16:18.694525" elapsed="0.001014"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:18.696196" 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-18T01:16:18.695769" elapsed="0.000461"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-18T01:16:18.696669" 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-18T01:16:18.696862" 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-18T01:16:18.696502" elapsed="0.000393"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:18.697530" 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-18T01:16:18.697164" 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-18T01:16:18.698837" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-18T01:16:18.698518" elapsed="0.000375"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-18T01:16:18.699515" 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-18T01:16:18.699128" elapsed="0.000421"/>
</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-18T01:16:18.699933" 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-18T01:16:18.700179" 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-18T01:16:18.700458" elapsed="0.000038"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-18T01:16:18.699761" elapsed="0.000782"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-18T01:16:18.699610" elapsed="0.000970"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-18T01:16:18.700634" elapsed="0.000037"/>
</return>
<msg time="2026-10-18T01:16:18.700813" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-18T01:16:18.698007" elapsed="0.002838"/>
</kw>
<status status="PASS" start="2026-10-18T01:16:18.697673" elapsed="0.003212"/>
</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-18T01:16:18.701110" elapsed="0.000027"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:18.700915" elapsed="0.000265"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:18.697649" elapsed="0.003557"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-18T01:16:18.701991" 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-18T01:16:18.701455" elapsed="0.000570"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-18T01:16:18.702086" 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-18T01:16:18.692858" elapsed="0.009491"/>
</kw>
<msg time="2026-10-18T01:16:18.702468" 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-18T01:16:18.683985" elapsed="0.018651"/>
</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-18T01:16:18.731920" 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-18T01:16:18.758126" elapsed="0.000031"/>
</kw>
<kw name="Resolve_Text_From_Template_File" owner="TemplatedRequests">
<var>${item_template}</var>
<arg>folder=${folder}</arg>
<arg>file_name=${base_name}.item.${extension}</arg>
<arg>mapping=${mapping}</arg>
<doc>Check if /w/workspace/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-18T01:16:18.784273" 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-18T01:16:18.784809" 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-18T01:16:18.785094" elapsed="0.000019"/>
</kw>
<for flavor="IN RANGE">
<iter>
<if>
<branch type="IF" condition="${iteration} &gt; ${iter_start}">
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${separator}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:18.785947" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:18.785681" elapsed="0.000340"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:18.785617" elapsed="0.000439"/>
</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-18T01:16:18.787106" elapsed="0.000052"/>
</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-18T01:16:18.788066" elapsed="0.000050"/>
</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-18T01:16:18.789078" elapsed="0.000051"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-18T01:16:18.785574" elapsed="0.003599"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-18T01:16:18.785405" elapsed="0.003826"/>
</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-18T01:16:18.789469" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:18.789863" elapsed="0.000018"/>
</return>
<msg time="2026-10-18T01:16:18.789987" 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-18T01:16:18.682513" elapsed="0.107499"/>
</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-18T01:16:18.792341" 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-18T01:16:18.791597" elapsed="0.000960">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-18T01:16:18.792673" 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-18T01:16:18.790806" elapsed="0.001969"/>
</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-18T01:16:18.793379" elapsed="0.000092"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:18.793012" elapsed="0.000545"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-18T01:16:18.794909" 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-18T01:16:18.794125" elapsed="0.000897"/>
</kw>
<status status="PASS" start="2026-10-18T01:16:18.793629" elapsed="0.001516"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:18.792993" elapsed="0.002225"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:18.796127" 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-18T01:16:18.795417" elapsed="0.000811"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-18T01:16:18.796595" elapsed="0.000032"/>
</return>
<msg time="2026-10-18T01:16:18.796729" 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-18T01:16:18.790339" elapsed="0.006413"/>
</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-18T01:16:18.798882" 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-18T01:16:18.798098" elapsed="0.000887">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-18T01:16:18.799104" 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-18T01:16:18.797375" elapsed="0.001830"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-18T01:16:18.799632" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-10-18T01:16:18.799486" elapsed="0.000256"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:18.799467" elapsed="0.000348"/>
</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-18T01:16:18.799967" 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-18T01:16:18.800292" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-18T01:16:18.800602" elapsed="0.000018"/>
</return>
<msg time="2026-10-18T01:16:18.800732" 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-18T01:16:18.797025" elapsed="0.003730"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:18.802514" 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-18T01:16:18.801919" elapsed="0.000681"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:18.803399" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-18T01:16:18.802884" elapsed="0.000600"/>
</kw>
<if>
<branch type="IF" condition="&quot;&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-18T01:16:18.808930" level="INFO">GET Request : url=http://10.30.171.114: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-18T01:16:18.809003" level="INFO">GET Response : url=http://10.30.171.114: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-18T01:16:18.809217" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:18.803994" elapsed="0.005990">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-18T01:16:18.803645" elapsed="0.006474">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:18.810499" elapsed="0.000092"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:18.810240" elapsed="0.000442"/>
</branch>
<status status="FAIL" start="2026-10-18T01:16:18.803627" elapsed="0.007128">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:18.811207" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:18.811502" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-10-18T01:16:18.811469" elapsed="0.000153"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:18.811451" elapsed="0.000246"/>
</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-18T01:16:18.811838" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-18T01:16:18.812115" 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-18T01:16:18.801102" elapsed="0.011116">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:18.812300" 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-18T01:16:18.665993" elapsed="0.146420">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:18.812654" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:18.812499" elapsed="0.000220"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:18.812483" elapsed="0.000256"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:18.812769" 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-18T01:16:18.664593" elapsed="0.148265">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-18T01:16:18.661421" elapsed="0.151497">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-18T01:16:18.661352" elapsed="0.151595">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:18.813158" 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-18T01:16:18.813398" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:18.813564" 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-18T01:16:18.813762" 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-18T01:16:18.813967" 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-18T01:16:18.814131" 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-18T01:16:18.814324" elapsed="0.000020"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="NOT RUN" start="2026-10-18T01:16:18.814407" 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-18T01:16:18.658087" elapsed="0.156415">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${raft_state}</value>
<status status="NOT RUN" start="2026-10-18T01:16:18.814562" elapsed="0.000019"/>
</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-18T01:16:18.656691" elapsed="0.157964">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:18.814875" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:18.814734" elapsed="0.000191"/>
</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-18T01:16:18.815083" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:18.814946" elapsed="0.000214"/>
</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-18T01:16:18.815344" elapsed="0.000124"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:18.815184" elapsed="0.000316"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:18.814719" elapsed="0.000802"/>
</if>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-18T01:16:18.656327" elapsed="0.159234">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:18.655877" elapsed="0.159738">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:18.815661" 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-18T01:16:18.646753" elapsed="0.168996">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:18.815921" 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-18T01:16:18.816143" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:18.816000" elapsed="0.000190"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:18.815984" elapsed="0.000226"/>
</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-18T01:16:18.816346" elapsed="0.000032"/>
</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-18T01:16:18.816527" elapsed="0.000018"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-18T01:16:18.816584" 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-18T01:16:18.645131" elapsed="0.171543">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:19.822478" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<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-18T01:16:19.821599" elapsed="0.000944"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:19.823577" 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-18T01:16:19.822887" elapsed="0.000745"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-18T01:16:19.823725" elapsed="0.000073"/>
</return>
<msg time="2026-10-18T01:16:19.824024" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list 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-18T01:16:19.820747" elapsed="0.003328"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list.</doc>
<status status="PASS" start="2026-10-18T01:16:19.824473" elapsed="0.000317"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:19.825938" 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-18T01:16:19.825191" elapsed="0.000802"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:19.826897" 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-18T01:16:19.826334" elapsed="0.000616"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:19.827817" 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-18T01:16:19.827251" elapsed="0.000628"/>
</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-18T01:16:19.833129" 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-18T01:16:19.832520" elapsed="0.000665"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-18T01:16:19.833302" elapsed="0.000085"/>
</return>
<msg time="2026-10-18T01:16:19.833606" 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-18T01:16:19.831758" elapsed="0.001900"/>
</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-18T01:16:19.867033" 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-18T01:16:19.866608" elapsed="0.000462"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-18T01:16:19.868069" 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-18T01:16:19.867768" elapsed="0.000401">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-18T01:16:19.868306" 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-18T01:16:19.867303" elapsed="0.001036"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:19.869039" 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-18T01:16:19.868602" elapsed="0.000473"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-18T01:16:19.869529" 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-18T01:16:19.869725" 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-18T01:16:19.869326" elapsed="0.000431"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:19.870360" 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-18T01:16:19.870028" elapsed="0.000420"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:19.871864" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-18T01:16:19.871544" elapsed="0.000377"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-18T01:16:19.872550" 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-18T01:16:19.872158" elapsed="0.000426"/>
</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-18T01:16:19.872970" 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-18T01:16:19.873219" 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-18T01:16:19.873504" elapsed="0.000028"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-18T01:16:19.872796" elapsed="0.000781"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-18T01:16:19.872644" elapsed="0.000971"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-18T01:16:19.873669" elapsed="0.000036"/>
</return>
<msg time="2026-10-18T01:16:19.873847" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-18T01:16:19.871040" elapsed="0.002839"/>
</kw>
<status status="PASS" start="2026-10-18T01:16:19.870534" elapsed="0.003384"/>
</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-18T01:16:19.874148" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:19.873949" elapsed="0.000268"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:19.870509" elapsed="0.003734"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-18T01:16:19.875020" 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-18T01:16:19.874486" elapsed="0.000569"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-18T01:16:19.875115" 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-18T01:16:19.865647" elapsed="0.009760"/>
</kw>
<msg time="2026-10-18T01:16:19.875500" 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-18T01:16:19.856318" elapsed="0.019350"/>
</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-18T01:16:19.905352" elapsed="0.000289"/>
</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-18T01:16:19.931294" 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-18T01:16:19.957224" 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-18T01:16:19.957632" 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-18T01:16:19.957923" 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-18T01:16:19.958883" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:19.958621" elapsed="0.000338"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:19.958558" elapsed="0.000434"/>
</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-18T01:16:19.959915" elapsed="0.000053"/>
</kw>
<kw name="Evaluate" owner="BuiltIn">
<var>${item}</var>
<arg>string.Template('''${item_template}''').substitute({"i":"${iteration}", "j":${j}})</arg>
<arg>modules=string</arg>
<doc>Evaluates the given expression in Python and returns the result.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:19.960891" elapsed="0.000052"/>
</kw>
<kw name="Append To List" owner="Collections">
<arg>${items}</arg>
<arg>${item}</arg>
<doc>Adds `values` to the end of `list`.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:19.961852" elapsed="0.000052"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-18T01:16:19.958512" elapsed="0.003437"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-18T01:16:19.958195" elapsed="0.003812"/>
</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-18T01:16:19.962217" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:19.962773" elapsed="0.000017"/>
</return>
<msg time="2026-10-18T01:16:19.962884" 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-18T01:16:19.854740" elapsed="0.108169"/>
</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-18T01:16:19.965126" 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-18T01:16:19.964315" elapsed="0.000914">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-18T01:16:19.965356" 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-18T01:16:19.963574" elapsed="0.001899"/>
</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-18T01:16:19.966045" elapsed="0.000089"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:19.965713" elapsed="0.000505"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-18T01:16:19.967582" 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-18T01:16:19.966880" elapsed="0.000816"/>
</kw>
<status status="PASS" start="2026-10-18T01:16:19.966303" elapsed="0.001478"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:19.965695" elapsed="0.002183"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:19.968860" 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-18T01:16:19.968040" elapsed="0.000923"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-18T01:16:19.969217" elapsed="0.000029"/>
</return>
<msg time="2026-10-18T01:16:19.969359" 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-18T01:16:19.963223" elapsed="0.006174"/>
</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-18T01:16:19.971547" 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-18T01:16:19.970841" elapsed="0.000809">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-18T01:16:19.971764" 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-18T01:16:19.970007" elapsed="0.001857"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-18T01:16:19.972505" elapsed="0.000025"/>
</return>
<status status="PASS" start="2026-10-18T01:16:19.972267" elapsed="0.000349"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:19.972084" elapsed="0.000606"/>
</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-18T01:16:19.972841" 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-18T01:16:19.973152" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-18T01:16:19.973422" elapsed="0.000017"/>
</return>
<msg time="2026-10-18T01:16:19.973553" 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-18T01:16:19.969676" elapsed="0.003899"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:19.975209" 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-18T01:16:19.974739" elapsed="0.000575"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:19.976196" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-18T01:16:19.975740" elapsed="0.000555"/>
</kw>
<if>
<branch type="IF" condition="&quot;&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-18T01:16:19.981419" level="INFO">GET Request : url=http://10.30.171.114: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-18T01:16:19.981488" level="INFO">GET Response : url=http://10.30.171.114: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-18T01:16:19.981694" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:19.976819" elapsed="0.005651">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-18T01:16:19.976473" elapsed="0.006128">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:19.982939" elapsed="0.000092"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:19.982721" elapsed="0.000399"/>
</branch>
<status status="FAIL" start="2026-10-18T01:16:19.976454" elapsed="0.006738">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:19.983680" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:19.983942" elapsed="0.000012"/>
</return>
<status status="NOT RUN" start="2026-10-18T01:16:19.983909" elapsed="0.000124"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:19.983891" elapsed="0.000213"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:19.984282" elapsed="0.000021"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-18T01:16:19.984581" 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-18T01:16:19.973919" elapsed="0.010765">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:19.984751" 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-18T01:16:19.838456" elapsed="0.146384">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:19.985077" elapsed="0.000022"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:19.984923" elapsed="0.000218"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:19.984907" elapsed="0.000255"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:19.985191" 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-18T01:16:19.837007" elapsed="0.148285">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-18T01:16:19.833799" elapsed="0.151555">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-18T01:16:19.833761" elapsed="0.151645">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:19.985612" 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-18T01:16:19.985809" 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-18T01:16:19.985971" 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-18T01:16:19.986167" 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-18T01:16:19.986502" 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-18T01:16:19.986671" 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-18T01:16:19.986832" elapsed="0.000018"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="NOT RUN" start="2026-10-18T01:16:19.986890" 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-18T01:16:19.830607" elapsed="0.156375">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${raft_state}</value>
<status status="NOT RUN" start="2026-10-18T01:16:19.987042" 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-18T01:16:19.828775" elapsed="0.158353">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:19.987384" elapsed="0.000020"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:19.987216" elapsed="0.000219"/>
</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-18T01:16:19.987599" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:19.987461" elapsed="0.000187"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:19.987825" elapsed="0.000046"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:19.987681" elapsed="0.000221"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:19.987195" elapsed="0.000728"/>
</if>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-18T01:16:19.828418" elapsed="0.159543">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:19.827985" elapsed="0.160030">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:19.988060" 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-18T01:16:19.819351" elapsed="0.168796">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:19.988327" 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-18T01:16:19.988561" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:19.988421" elapsed="0.000187"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:19.988406" 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-18T01:16:19.988752" 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-18T01:16:19.988917" elapsed="0.000019"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-18T01:16:19.988976" 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-18T01:16:19.817710" elapsed="0.171355">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:20.997918" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<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-18T01:16:20.994048" elapsed="0.003937"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:20.999013" 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-18T01:16:20.998358" elapsed="0.000711"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-18T01:16:20.999163" elapsed="0.000074"/>
</return>
<msg time="2026-10-18T01:16:20.999527" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list 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-18T01:16:20.993190" elapsed="0.006390"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list.</doc>
<status status="PASS" start="2026-10-18T01:16:20.999903" elapsed="0.000304"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:21.001321" 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-18T01:16:21.000623" elapsed="0.000784"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:21.002334" 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-18T01:16:21.001737" elapsed="0.000683"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:21.003226" 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-18T01:16:21.002730" elapsed="0.000574"/>
</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-18T01:16:21.008004" 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-18T01:16:21.007414" elapsed="0.000645"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-18T01:16:21.008150" elapsed="0.000058"/>
</return>
<msg time="2026-10-18T01:16:21.008472" 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-18T01:16:21.006674" elapsed="0.001851"/>
</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-18T01:16:21.041194" 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-18T01:16:21.040703" elapsed="0.000528"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-18T01:16:21.042227" 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-18T01:16:21.041925" elapsed="0.000417">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-18T01:16:21.042492" 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-18T01:16:21.041483" elapsed="0.001040"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:21.043188" 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-18T01:16:21.042756" elapsed="0.000467"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-18T01:16:21.043662" 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-18T01:16:21.043855" 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-18T01:16:21.043500" elapsed="0.000387"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:21.044499" 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-18T01:16:21.044146" elapsed="0.000410"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:21.046046" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-18T01:16:21.045714" elapsed="0.000393"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-18T01:16:21.046762" 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-18T01:16:21.046403" elapsed="0.000393"/>
</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-18T01:16:21.047194" 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-18T01:16:21.047480" 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-18T01:16:21.047731" elapsed="0.000026"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-18T01:16:21.047017" elapsed="0.000784"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-18T01:16:21.046861" elapsed="0.000979"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-18T01:16:21.047894" elapsed="0.000039"/>
</return>
<msg time="2026-10-18T01:16:21.048077" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-18T01:16:21.045157" elapsed="0.002953"/>
</kw>
<status status="PASS" start="2026-10-18T01:16:21.044659" elapsed="0.003491"/>
</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-18T01:16:21.048412" elapsed="0.000028"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:21.048181" elapsed="0.000303"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:21.044628" elapsed="0.003883"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-18T01:16:21.049282" 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-18T01:16:21.048726" elapsed="0.000593"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-18T01:16:21.049399" 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-18T01:16:21.039741" elapsed="0.009915"/>
</kw>
<msg time="2026-10-18T01:16:21.049744" 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-18T01:16:21.031230" elapsed="0.018683"/>
</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-18T01:16:21.079245" elapsed="0.000037"/>
</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-18T01:16:21.105209" 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-18T01:16:21.131053" 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-18T01:16:21.131490" 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-18T01:16:21.131772" 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-18T01:16:21.132632" elapsed="0.000032"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:21.132329" elapsed="0.000375"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:21.132261" elapsed="0.000477"/>
</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-18T01:16:21.133835" elapsed="0.000052"/>
</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-18T01:16:21.134764" elapsed="0.000050"/>
</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-18T01:16:21.135764" elapsed="0.000053"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-18T01:16:21.132208" elapsed="0.003653"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-18T01:16:21.132044" elapsed="0.003873"/>
</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-18T01:16:21.136128" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:21.136544" elapsed="0.000017"/>
</return>
<msg time="2026-10-18T01:16:21.136656" 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-18T01:16:21.029774" elapsed="0.106906"/>
</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-18T01:16:21.138916" 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-18T01:16:21.138193" elapsed="0.000836">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-18T01:16:21.139143" 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-18T01:16:21.137331" elapsed="0.001912"/>
</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-18T01:16:21.139914" elapsed="0.000090"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:21.139582" elapsed="0.000505"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-18T01:16:21.141463" 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-18T01:16:21.140680" elapsed="0.000899"/>
</kw>
<status status="PASS" start="2026-10-18T01:16:21.140160" elapsed="0.001504"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:21.139563" elapsed="0.002172"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:21.142632" 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-18T01:16:21.141900" elapsed="0.000833"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-18T01:16:21.142987" elapsed="0.000029"/>
</return>
<msg time="2026-10-18T01:16:21.143117" 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-18T01:16:21.136993" elapsed="0.006175"/>
</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-18T01:16:21.145328" 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-18T01:16:21.144643" elapsed="0.000872">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-18T01:16:21.145630" 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-18T01:16:21.143890" elapsed="0.001841"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-18T01:16:21.146115" elapsed="0.000024"/>
</return>
<status status="PASS" start="2026-10-18T01:16:21.145969" elapsed="0.000257"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:21.145951" elapsed="0.000362"/>
</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-18T01:16:21.146483" 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-18T01:16:21.146797" elapsed="0.000021"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-18T01:16:21.147033" elapsed="0.000016"/>
</return>
<msg time="2026-10-18T01:16:21.147168" 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-18T01:16:21.143564" elapsed="0.003627"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:21.148925" 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-18T01:16:21.148459" elapsed="0.000553"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:21.149849" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-18T01:16:21.149308" elapsed="0.000625"/>
</kw>
<if>
<branch type="IF" condition="&quot;&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-18T01:16:21.155334" level="INFO">GET Request : url=http://10.30.171.114: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-18T01:16:21.155423" level="INFO">GET Response : url=http://10.30.171.114: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-18T01:16:21.155652" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:21.150478" elapsed="0.005927">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-18T01:16:21.150093" elapsed="0.006442">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:21.156873" elapsed="0.000091"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:21.156655" elapsed="0.000399"/>
</branch>
<status status="FAIL" start="2026-10-18T01:16:21.150074" elapsed="0.007054">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:21.157626" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:21.157889" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-10-18T01:16:21.157855" elapsed="0.000125"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:21.157837" elapsed="0.000213"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:21.158191" elapsed="0.000020"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-18T01:16:21.158500" 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-18T01:16:21.147641" elapsed="0.010962">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:21.158700" 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-18T01:16:21.013168" elapsed="0.145624">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:21.159032" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:21.158877" elapsed="0.000220"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:21.158861" elapsed="0.000257"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:21.159149" 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-18T01:16:21.011782" elapsed="0.147458">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-18T01:16:21.008666" elapsed="0.150649">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-18T01:16:21.008628" elapsed="0.150715">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:21.159577" 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-18T01:16:21.159776" 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-18T01:16:21.159939" elapsed="0.000024"/>
</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-18T01:16:21.160142" 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-18T01:16:21.160483" elapsed="0.000024"/>
</kw>
<kw name="Get From Dictionary" owner="Collections">
<var>${value}</var>
<arg>${data_object}</arg>
<arg>value</arg>
<doc>Returns a value from the given `dictionary` based on the given `key`.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:21.160652" 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-18T01:16:21.160813" elapsed="0.000018"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="NOT RUN" start="2026-10-18T01:16:21.160870" 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-18T01:16:21.005547" elapsed="0.155417">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${raft_state}</value>
<status status="NOT RUN" start="2026-10-18T01:16:21.161025" 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-18T01:16:21.004145" elapsed="0.156966">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:21.161345" elapsed="0.000033"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:21.161189" elapsed="0.000222"/>
</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-18T01:16:21.161570" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:21.161432" elapsed="0.000186"/>
</branch>
<branch type="ELSE IF" condition="${validate}">
<kw name="Fail" owner="BuiltIn">
<arg>Unrecognized Raft state: ${raft_state}</arg>
<doc>Fails the test or task with the given message and optionally alters its tags.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:21.161778" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:21.161639" elapsed="0.000186"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:21.161174" elapsed="0.000671"/>
</if>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-18T01:16:21.003821" elapsed="0.158062">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:21.003435" elapsed="0.158537">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:21.162020" 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-18T01:16:20.991821" elapsed="0.170288">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:21.162293" 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-18T01:16:21.162529" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:21.162387" elapsed="0.000190"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:21.162358" 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-18T01:16:21.162721" 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-18T01:16:21.162887" elapsed="0.000018"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-18T01:16:21.162944" 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-18T01:16:20.990099" elapsed="0.172934">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:22.168661" level="INFO">${return_list_reference} = [1, 2, 3]</msg>
<var>${return_list_reference}</var>
<arg>"""${given_list}""" != ""</arg>
<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-18T01:16:22.167784" elapsed="0.000941"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:22.169741" 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-18T01:16:22.169064" elapsed="0.000733"/>
</kw>
<return>
<value>${return_list_copy}</value>
<status status="PASS" start="2026-10-18T01:16:22.169889" elapsed="0.000070"/>
</return>
<msg time="2026-10-18T01:16:22.170194" level="INFO">${index_list} = [1, 2, 3]</msg>
<var>${index_list}</var>
<arg>given_list=${member_index_list}</arg>
<doc>Utility to allow ${EMPTY} as default argument value, as the internal list is computed at runtime.
This keyword always returns a (shallow) copy of given or default list,
so operations with the returned list 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-18T01:16:22.166944" elapsed="0.003336"/>
</kw>
<kw name="Sort List" owner="Collections">
<arg>${index_list}</arg>
<doc>Sorts the given list.</doc>
<status status="PASS" start="2026-10-18T01:16:22.170716" elapsed="0.000306"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:22.172136" 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-18T01:16:22.171431" elapsed="0.000769"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:22.173123" 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-18T01:16:22.172611" elapsed="0.000566"/>
</kw>
<kw name="Create List" owner="BuiltIn">
<msg time="2026-10-18T01:16:22.174035" 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-18T01:16:22.173529" elapsed="0.000559"/>
</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-18T01:16:22.179495" 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-18T01:16:22.178842" elapsed="0.000708"/>
</kw>
<return>
<value>${session}</value>
<status status="PASS" start="2026-10-18T01:16:22.179643" elapsed="0.000059"/>
</return>
<msg time="2026-10-18T01:16:22.179914" 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-18T01:16:22.178028" elapsed="0.001937"/>
</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-18T01:16:22.213458" 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-18T01:16:22.212978" elapsed="0.000517"/>
</kw>
<kw name="Run Keyword And Return Status" owner="BuiltIn">
<kw name="File Should Exist" owner="OperatingSystem">
<msg time="2026-10-18T01:16:22.214534" 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-18T01:16:22.214149" elapsed="0.000548">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-18T01:16:22.214817" 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-18T01:16:22.213707" elapsed="0.001141"/>
</kw>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:22.215613" 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-18T01:16:22.215080" elapsed="0.000568"/>
</kw>
<kw name="Get File" owner="OperatingSystem">
<msg time="2026-10-18T01:16:22.216031" 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-18T01:16:22.216236" 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-18T01:16:22.215870" elapsed="0.000415"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:22.216896" 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-18T01:16:22.216583" elapsed="0.000369"/>
</kw>
<if>
<branch type="IF" condition="${percent_encode} == True">
<kw name="Encode_Mapping" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:22.218578" level="INFO">mapping: {}</msg>
<arg>mapping: ${mapping}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-18T01:16:22.218157" elapsed="0.000479"/>
</kw>
<kw name="Create Dictionary" owner="BuiltIn">
<msg time="2026-10-18T01:16:22.219236" 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-18T01:16:22.218875" elapsed="0.000412"/>
</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-18T01:16:22.219699" 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-18T01:16:22.219946" 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-18T01:16:22.220193" elapsed="0.000026"/>
</kw>
<var name="${key}"/>
<var name="${value}"/>
<status status="NOT RUN" start="2026-10-18T01:16:22.219523" elapsed="0.000761"/>
</iter>
<var>${key}</var>
<var>${value}</var>
<value>&amp;{mapping}</value>
<status status="NOT RUN" start="2026-10-18T01:16:22.219349" elapsed="0.000974"/>
</for>
<return>
<value>${encoded_mapping}</value>
<status status="PASS" start="2026-10-18T01:16:22.220399" elapsed="0.000039"/>
</return>
<msg time="2026-10-18T01:16:22.220583" level="INFO">${mapping_to_use} = {}</msg>
<var>${mapping_to_use}</var>
<arg>${mapping}</arg>
<status status="PASS" start="2026-10-18T01:16:22.217495" elapsed="0.003120"/>
</kw>
<status status="PASS" start="2026-10-18T01:16:22.217036" elapsed="0.003619"/>
</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-18T01:16:22.220884" elapsed="0.000026"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:22.220686" elapsed="0.000266"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:22.217013" elapsed="0.003965"/>
</if>
<kw name="Evaluate" owner="BuiltIn">
<msg time="2026-10-18T01:16:22.221769" 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-18T01:16:22.221187" elapsed="0.000617"/>
</kw>
<return>
<value>${final_text}</value>
<status status="PASS" start="2026-10-18T01:16:22.221863" 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-18T01:16:22.212020" elapsed="0.010091"/>
</kw>
<msg time="2026-10-18T01:16:22.222200" 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-18T01:16:22.202841" elapsed="0.019575"/>
</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-18T01:16:22.251832" 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-18T01:16:22.277618" 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-18T01:16:22.303717" elapsed="0.000033"/>
</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-18T01:16:22.304125" 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-18T01:16:22.304445" 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-18T01:16:22.305296" elapsed="0.000037"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:22.305013" elapsed="0.000500"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:22.304947" elapsed="0.000604"/>
</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-18T01:16:22.306474" elapsed="0.000052"/>
</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-18T01:16:22.307506" elapsed="0.000053"/>
</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-18T01:16:22.308442" elapsed="0.000052"/>
</kw>
<var name="${iteration}"/>
<status status="NOT RUN" start="2026-10-18T01:16:22.304901" elapsed="0.003638"/>
</iter>
<var>${iteration}</var>
<value>${iter_start}</value>
<value>${iterations}+${iter_start}</value>
<status status="NOT RUN" start="2026-10-18T01:16:22.304731" elapsed="0.003866"/>
</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-18T01:16:22.308810" elapsed="0.000020"/>
</kw>
<return>
<value>${final_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:22.309202" elapsed="0.000017"/>
</return>
<msg time="2026-10-18T01:16:22.309338" 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-18T01:16:22.201343" elapsed="0.108151"/>
</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-18T01:16:22.311775" 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-18T01:16:22.310944" elapsed="0.000945">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-18T01:16:22.312004" 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-18T01:16:22.310155" elapsed="0.001951"/>
</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-18T01:16:22.312720" elapsed="0.000090"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:22.312377" elapsed="0.000516"/>
</branch>
<branch type="ELSE">
<kw name="Set Variable" owner="BuiltIn">
<msg time="2026-10-18T01:16:22.314216" 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-18T01:16:22.313545" elapsed="0.000803"/>
</kw>
<status status="PASS" start="2026-10-18T01:16:22.312966" elapsed="0.001482"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:22.312344" elapsed="0.002176"/>
</if>
<kw name="Set Variable If" owner="BuiltIn">
<msg time="2026-10-18T01:16:22.315432" 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-18T01:16:22.314684" elapsed="0.000851"/>
</kw>
<return>
<value>${expression}</value>
<status status="PASS" start="2026-10-18T01:16:22.315789" elapsed="0.000030"/>
</return>
<msg time="2026-10-18T01:16:22.315919" 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-18T01:16:22.309820" elapsed="0.006122"/>
</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-18T01:16:22.318187" 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-18T01:16:22.317511" elapsed="0.000793">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-18T01:16:22.318472" 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-18T01:16:22.316759" elapsed="0.001814"/>
</kw>
<if>
<branch type="IF" condition="${read_volatiles_file} == ${false}">
<return>
<value>${EMPTY}</value>
<status status="PASS" start="2026-10-18T01:16:22.318957" elapsed="0.000024"/>
</return>
<status status="PASS" start="2026-10-18T01:16:22.318812" elapsed="0.000254"/>
</branch>
<status status="PASS" start="2026-10-18T01:16:22.318792" elapsed="0.000348"/>
</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-18T01:16:22.319309" 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-18T01:16:22.319641" elapsed="0.000020"/>
</kw>
<return>
<value>${volatiles_list}</value>
<status status="NOT RUN" start="2026-10-18T01:16:22.319876" elapsed="0.000019"/>
</return>
<msg time="2026-10-18T01:16:22.320009" 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-18T01:16:22.316264" elapsed="0.003774"/>
</kw>
<kw name="Get_From_Uri" owner="TemplatedRequests">
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:22.322038" 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-18T01:16:22.321566" elapsed="0.000558"/>
</kw>
<kw name="Log" owner="BuiltIn">
<msg time="2026-10-18T01:16:22.322901" level="INFO">{}</msg>
<arg>${accept}</arg>
<doc>Logs the given message with the given level.</doc>
<status status="PASS" start="2026-10-18T01:16:22.322438" elapsed="0.000546"/>
</kw>
<if>
<branch type="IF" condition="&quot;&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-18T01:16:22.327826" level="INFO">GET Request : url=http://10.30.171.114: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-18T01:16:22.327892" level="INFO">GET Response : url=http://10.30.171.114: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-18T01:16:22.328100" level="FAIL">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:22.323541" elapsed="0.005312">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-18T01:16:22.323145" elapsed="0.005838">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:22.329347" elapsed="0.000131"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:22.329105" elapsed="0.000462"/>
</branch>
<status status="FAIL" start="2026-10-18T01:16:22.323126" elapsed="0.006515">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:22.330095" elapsed="0.000025"/>
</kw>
<if>
<branch type="IF" condition="not ${normalize_json}">
<return>
<value>${response.text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:22.330398" elapsed="0.000013"/>
</return>
<status status="NOT RUN" start="2026-10-18T01:16:22.330340" elapsed="0.000152"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:22.330322" elapsed="0.000243"/>
</if>
<kw name="Normalize Json Text" owner="norm_json">
<var>${text_normalized}</var>
<arg>${response.text}</arg>
<arg>jmes_path=${jmes_path}</arg>
<arg>keys_with_volatiles=${keys_with_volatiles}</arg>
<doc>Attempt to return sorted indented JSON string.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:22.330705" elapsed="0.000019"/>
</kw>
<return>
<value>${text_normalized}</value>
<status status="NOT RUN" start="2026-10-18T01:16:22.330981" 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-18T01:16:22.320629" elapsed="0.010455">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:22.331182" 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-18T01:16:22.184726" elapsed="0.146560">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:22.331561" elapsed="0.000023"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:22.331401" elapsed="0.000225"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:22.331355" elapsed="0.000292"/>
</if>
<return>
<value>${response_text}</value>
<status status="NOT RUN" start="2026-10-18T01:16:22.331677" 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-18T01:16:22.183295" elapsed="0.148473">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<status status="FAIL" start="2026-10-18T01:16:22.180107" elapsed="0.151723">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</branch>
<status status="FAIL" start="2026-10-18T01:16:22.180068" elapsed="0.151790">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:22.332068" 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-18T01:16:22.332283" elapsed="0.000020"/>
</kw>
<kw name="Set Variable" owner="BuiltIn">
<var>${uri}</var>
<arg>${JOLOKIA_READ_URI}:Category=Shards,name=member-${cluster_index}-shard-${shard_name}-${shard_type},type=${type_class}</arg>
<doc>Returns the given values which can then be assigned to a variable.</doc>
<status status="NOT RUN" start="2026-10-18T01:16:22.332472" 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-18T01:16:22.332673" 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-18T01:16:22.332877" 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-18T01:16:22.333042" 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-18T01:16:22.333202" elapsed="0.000019"/>
</kw>
<return>
<value>${raft_property}</value>
<status status="NOT RUN" start="2026-10-18T01:16:22.333270" 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-18T01:16:22.176813" elapsed="0.156661">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<return>
<value>${raft_state}</value>
<status status="NOT RUN" start="2026-10-18T01:16:22.333540" 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-18T01:16:22.174951" elapsed="0.158678">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:22.333847" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:22.333708" elapsed="0.000189"/>
</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-18T01:16:22.334054" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:22.333919" 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-18T01:16:22.334274" elapsed="0.000018"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:22.334123" elapsed="0.000198"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:22.333692" elapsed="0.000649"/>
</if>
<var name="${index}">1</var>
<status status="FAIL" start="2026-10-18T01:16:22.174625" elapsed="0.159769">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:22.174190" elapsed="0.160259">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:22.334495" 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-18T01:16:22.165582" elapsed="0.169037">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114: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-18T01:16:22.334793" 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-18T01:16:22.335021" elapsed="0.000019"/>
</kw>
<status status="NOT RUN" start="2026-10-18T01:16:22.334875" elapsed="0.000195"/>
</branch>
<status status="NOT RUN" start="2026-10-18T01:16:22.334859" elapsed="0.000231"/>
</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-18T01:16:22.335214" 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-18T01:16:22.335408" elapsed="0.000019"/>
</kw>
<return>
<value>${leader}</value>
<value>${follower_list}</value>
<status status="NOT RUN" start="2026-10-18T01:16:22.335467" 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-18T01:16:22.163977" elapsed="0.171579">HTTPError: 404 Client Error: Not Found for url: http://10.30.171.114:8181/rests/data/ietf-yang-library:modules-state?content=nonconfig</status>
</kw>
<msg time="2026-10-18T01:16:22.335645" 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.114: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-18T01:16:11.616686" elapsed="10.719051">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.114: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-18T01:16:22.335990" elapsed="0.000022"/>
</kw>
<return>
<value>${inv_conf_leader}</value>
<value>${inv_conf_followers_list}</value>
<status status="NOT RUN" start="2026-10-18T01:16:22.336049" elapsed="0.000015"/>
</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-18T01:16:11.615607" elapsed="10.720532">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.114: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-18T01:16:22.336342" elapsed="0.000032"/>
</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-18T01:16:22.336545" elapsed="0.000019"/>
</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-18T01:16:22.336715" elapsed="0.000019"/>
</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-18T01:16:22.336879" elapsed="0.000017"/>
</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-18T01:16:22.337040" elapsed="0.000017"/>
</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-18T01:16:22.337198" elapsed="0.000018"/>
</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-18T01:16:22.337407" elapsed="0.000019"/>
</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-18T01:16:22.337594" elapsed="0.000017"/>
</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-18T01:16:22.337774" elapsed="0.000018"/>
</kw>
<doc>Find a leader and followers in the inventory config shard</doc>
<status status="FAIL" start="2026-10-18T01:16:11.614287" elapsed="10.723647">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.114: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-18T01:16:22.340395" 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-18T01:16:22.338719" elapsed="0.001716">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-18T01:16:22.340632" elapsed="0.000020"/>
</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-18T01:16:22.340849" elapsed="0.000019"/>
</kw>
<doc>Start mininet with connection to follower node1.</doc>
<status status="FAIL" start="2026-10-18T01:16:22.338144" elapsed="0.002844">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-18T01:16:22.342045" level="INFO">${config_datastore_write_start_time} = 2026-10-18 01:16:22.342</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-18T01:16:22.341805" elapsed="0.000265"/>
</kw>
<kw name="Add Bulk Flow In Node" owner="BulkomaticKeywords">
<msg time="2026-10-18T01:16:22.344966" 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-18T01:16:22.343593" elapsed="0.001407">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-18T01:16:22.345167" elapsed="0.000020"/>
</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-18T01:16:22.345342" elapsed="0.000031"/>
</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-18T01:16:22.345535" elapsed="0.000018"/>
</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-18T01:16:22.345722" elapsed="0.000017"/>
</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-18T01:16:22.345883" elapsed="0.000018"/>
</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-18T01:16:22.346049" elapsed="0.000017"/>
</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-18T01:16:22.346208" elapsed="0.000017"/>
</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-18T01:16:22.346416" elapsed="0.000019"/>
</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-18T01:16:22.346600" elapsed="0.000018"/>
</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-18T01:16:22.341269" elapsed="0.005459">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-18T01:16:22.347619" level="INFO">${Mininet_write_start_time} = 2026-10-18 01:16:22.348</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-18T01:16:22.347420" elapsed="0.000223"/>
</kw>
<kw name="Verify Aggregate Flow From Mininet Session" owner="MininetKeywords">
<msg time="2026-10-18T01:16:22.349142" 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-18T01:16:22.347817" elapsed="0.001358">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-18T01:16:22.349350" elapsed="0.000034"/>
</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-18T01:16:22.349530" elapsed="0.000018"/>
</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-18T01:16:22.349704" elapsed="0.000017"/>
</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-18T01:16:22.349866" elapsed="0.000033"/>
</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-18T01:16:22.350043" elapsed="0.000018"/>
</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-18T01:16:22.350202" elapsed="0.000017"/>
</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-18T01:16:22.350420" elapsed="0.000020"/>
</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-18T01:16:22.350605" elapsed="0.000017"/>
</kw>
<doc>Verify 100K flows are installed in 10 switches.</doc>
<status status="FAIL" start="2026-10-18T01:16:22.346982" elapsed="0.003747">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-18T01:16:22.354684" 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-18T01:16:22.353307" elapsed="0.001411">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:16:24.361788" 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-18T01:16:24.358628" 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-18T01:16:26.368579" 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-18T01:16:26.365343" elapsed="0.003321">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:16:28.375689" 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-18T01:16:28.372506" elapsed="0.003277">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:16:30.382684" 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-18T01:16:30.379516" 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-18T01:16:32.389723" 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-18T01:16:32.386318" elapsed="0.003489">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:16:34.396851" 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-18T01:16:34.393343" elapsed="0.003593">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:16:36.403510" 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-18T01:16:36.400399" elapsed="0.003204">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:16:38.410386" 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-18T01:16:38.407204" elapsed="0.003274">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:16:40.417284" 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-18T01:16:40.414088" elapsed="0.003311">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:16:42.424050" 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-18T01:16:42.420931" 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-18T01:16:44.430903" 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-18T01:16:44.427649" elapsed="0.003337">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:16:46.438260" 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-18T01:16:46.434853" elapsed="0.003509">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:16:48.445634" 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-18T01:16:48.442444" elapsed="0.003281">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:16:50.452450" 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-18T01:16:50.449183" 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-18T01:16:52.459170" 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-18T01:16:52.455940" elapsed="0.003315">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:16:54.465948" 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-18T01:16:54.462827" elapsed="0.003206">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:16:56.472859" 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-18T01:16:56.469581" elapsed="0.003364">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:16:58.479594" 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-18T01:16:58.476503" elapsed="0.003172">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:17:00.487073" 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-18T01:17:00.483525" elapsed="0.003645">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:17:02.494186" 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-18T01:17:02.491005" elapsed="0.003273">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:17:04.501098" 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-18T01:17:04.497923" elapsed="0.003263">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:17:06.508179" 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-18T01:17:06.505002" elapsed="0.003275">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:17:08.514839" 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-18T01:17:08.511722" elapsed="0.003202">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:17:10.521957" 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-18T01:17:10.518739" elapsed="0.003311">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:17:12.529028" 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-18T01:17:12.525832" 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-18T01:17:14.537828" 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-18T01:17:14.534706" 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-18T01:17:16.544638" 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-18T01:17:16.541515" 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-18T01:17:18.551604" 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-18T01:17:18.548345" 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-18T01:17:20.558653" 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-18T01:17:20.555499" 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-18T01:17:22.565815" 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-18T01:17:22.562525" elapsed="0.003412">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:17:24.572871" 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-18T01:17:24.569606" elapsed="0.003363">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:17:26.618347" 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-18T01:17:26.576652" elapsed="0.041846">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:17:28.625341" 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-18T01:17:28.622185" 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-18T01:17:30.632840" 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-18T01:17:30.629403" 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-18T01:17:32.639952" 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-18T01:17:32.636767" elapsed="0.003277">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:17:34.646901" 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-18T01:17:34.643717" elapsed="0.003274">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:17:36.653769" 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-18T01:17:36.650606" 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-18T01:17:38.660793" 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-18T01:17:38.657646" elapsed="0.003233">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:17:40.667748" 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-18T01:17:40.664592" elapsed="0.003264">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:17:42.674544" 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-18T01:17:42.671338" elapsed="0.003294">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:17:44.681261" 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-18T01:17:44.678066" 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-18T01:17:46.688052" 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-18T01:17:46.684874" elapsed="0.003265">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:17:48.694859" 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-18T01:17:48.691609" elapsed="0.003337">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:17:50.702254" 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-18T01:17:50.699017" elapsed="0.003334">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:17:52.708936" 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-18T01:17:52.705778" 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-18T01:17:54.715818" 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-18T01:17:54.712619" 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-18T01:17:56.722531" 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-18T01:17:56.719406" elapsed="0.003216">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:17:58.729227" 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-18T01:17:58.726128" 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-18T01:18:00.736183" 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-18T01:18:00.733040" elapsed="0.003233">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:18:02.743481" 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-18T01:18:02.740296" elapsed="0.003276">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:18:04.750061" 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-18T01:18:04.746974" elapsed="0.003168">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:18:06.756796" 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-18T01:18:06.753631" elapsed="0.003247">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:18:08.763418" 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-18T01:18:08.760298" 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-18T01:18:10.770362" 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-18T01:18:10.767198" elapsed="0.003281">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:18:12.777142" 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-18T01:18:12.774010" elapsed="0.003220">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:18:14.784111" 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-18T01:18:14.780956" elapsed="0.003239">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:18:16.790730" 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-18T01:18:16.787627" elapsed="0.003186">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:18:18.797482" 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-18T01:18:18.794329" elapsed="0.003264">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:18:20.804348" 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-18T01:18:20.801202" elapsed="0.003259">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:18:22.811051" 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-18T01:18:22.807908" 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-18T01:18:24.817657" 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-18T01:18:24.814572" elapsed="0.003167">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:18:26.824591" 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-18T01:18:26.821451" elapsed="0.003225">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:18:28.831210" 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-18T01:18:28.828091" elapsed="0.003204">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:18:30.837813" 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-18T01:18:30.834703" elapsed="0.003191">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:18:32.844598" 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-18T01:18:32.841451" elapsed="0.003233">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:18:34.852147" 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-18T01:18:34.848617" elapsed="0.003644">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:18:36.859395" 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-18T01:18:36.856164" 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-18T01:18:38.866783" 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-18T01:18:38.863600" 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-18T01:18:40.873923" 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-18T01:18:40.870755" elapsed="0.003261">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:18:42.880782" 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-18T01:18:42.877644" elapsed="0.003226">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:18:44.887796" 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-18T01:18:44.884651" 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-18T01:18:46.894764" 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-18T01:18:46.891609" elapsed="0.003247">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:18:48.901615" 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-18T01:18:48.898470" elapsed="0.003238">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:18:50.909023" 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-18T01:18:50.905850" 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-18T01:18:52.915728" 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-18T01:18:52.912611" elapsed="0.003202">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:18:54.922745" 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-18T01:18:54.919560" elapsed="0.003281">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:18:56.929549" 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-18T01:18:56.926424" elapsed="0.003212">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:18:58.936457" 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-18T01:18:58.933236" elapsed="0.003317">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:19:00.943422" 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-18T01:19:00.940218" 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-18T01:19:02.950861" 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-18T01:19:02.947625" elapsed="0.003332">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:19:04.957880" 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-18T01:19:04.954657" elapsed="0.003317">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:19:06.965092" 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-18T01:19:06.961770" elapsed="0.003421">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:19:08.972072" 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-18T01:19:08.968877" 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-18T01:19:10.978971" 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-18T01:19:10.975837" elapsed="0.003225">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:19:12.985878" 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-18T01:19:12.982703" elapsed="0.003265">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:19:14.993193" 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-18T01:19:14.990014" elapsed="0.003272">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:19:17.000480" 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-18T01:19:16.997051" elapsed="0.003524">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:19:19.007858" 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-18T01:19:19.004428" elapsed="0.003530">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:19:21.014767" 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-18T01:19:21.011626" elapsed="0.003231">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:19:23.021660" 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-18T01:19:23.018510" elapsed="0.003243">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:19:25.028590" 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-18T01:19:25.025463" elapsed="0.003219">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:19:27.035892" 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-18T01:19:27.032740" elapsed="0.003246">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:19:29.043434" 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-18T01:19:29.039914" elapsed="0.003622">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:19:31.050531" 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-18T01:19:31.047349" 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-18T01:19:33.057451" 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-18T01:19:33.054280" 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-18T01:19:35.064436" 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-18T01:19:35.061261" 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-18T01:19:37.071561" 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-18T01:19:37.068333" 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-18T01:19:39.076356" 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-18T01:19:39.074304" elapsed="0.002134">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:19:41.083258" 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-18T01:19:41.080092" 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-18T01:19:43.090272" 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-18T01:19:43.087127" elapsed="0.003259">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:19:45.097580" 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-18T01:19:45.094390" 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-18T01:19:47.104573" 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-18T01:19:47.101349" elapsed="0.003317">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:19:49.111605" 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-18T01:19:49.108456" 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-18T01:19:51.119174" 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-18T01:19:51.115961" elapsed="0.003304">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:19:53.126081" 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-18T01:19:53.122912" 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-18T01:19:55.133208" 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-18T01:19:55.129944" 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-18T01:19:57.140137" 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-18T01:19:57.136980" 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-18T01:19:59.147333" 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-18T01:19:59.144130" elapsed="0.003335">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:20:01.154309" 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-18T01:20:01.151175" 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-18T01:20:03.161520" 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-18T01:20:03.158350" 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-18T01:20:05.168471" 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-18T01:20:05.165307" elapsed="0.003256">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:20:07.175604" 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-18T01:20:07.172425" elapsed="0.003270">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:20:09.182775" 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-18T01:20:09.179534" elapsed="0.003334">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:20:11.189706" 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-18T01:20:11.186557" 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-18T01:20:13.196839" 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-18T01:20:13.193621" elapsed="0.003341">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:20:15.204203" 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-18T01:20:15.200894" elapsed="0.003407">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:20:17.211715" 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-18T01:20:17.208438" 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-18T01:20:19.218667" 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-18T01:20:19.215514" elapsed="0.003243">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:20:21.225799" 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-18T01:20:21.222627" elapsed="0.003265">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:20:23.232923" 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-18T01:20:23.229729" elapsed="0.003289">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:20:25.240062" 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-18T01:20:25.236704" elapsed="0.003452">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:20:27.247271" 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-18T01:20:27.244107" 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-18T01:20:29.254562" 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-18T01:20:29.251181" elapsed="0.003476">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:20:31.261611" 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-18T01:20:31.258410" elapsed="0.003296">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:20:33.268766" 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-18T01:20:33.265572" elapsed="0.003307">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:20:35.275704" 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-18T01:20:35.272553" elapsed="0.003242">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:20:37.282625" 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-18T01:20:37.279499" elapsed="0.003216">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:20:39.289956" 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-18T01:20:39.286759" 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-18T01:20:41.296985" 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-18T01:20:41.293844" 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-18T01:20:43.303999" 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-18T01:20:43.300832" 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-18T01:20:45.311136" 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-18T01:20:45.307932" 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-18T01:20:47.318204" 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-18T01:20:47.315039" 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-18T01:20:49.325409" 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-18T01:20:49.322191" 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-18T01:20:51.332862" 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-18T01:20:51.329649" elapsed="0.003304">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:20:53.339871" 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-18T01:20:53.336684" 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-18T01:20:55.346880" 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-18T01:20:55.343713" 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-18T01:20:57.354079" 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-18T01:20:57.350928" elapsed="0.003244">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:20:59.361587" 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-18T01:20:59.358193" 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-18T01:21:01.368700" 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-18T01:21:01.365482" elapsed="0.003325">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:21:03.376215" 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-18T01:21:03.372945" elapsed="0.003379">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:21:05.383357" 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-18T01:21:05.380156" elapsed="0.003321">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:21:07.390727" 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-18T01:21:07.387432" elapsed="0.003406">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:21:09.398600" 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-18T01:21:09.395060" elapsed="0.003663">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:21:11.405605" 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-18T01:21:11.402442" elapsed="0.003275">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:21:13.412703" 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-18T01:21:13.409520" elapsed="0.003278">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:21:15.420045" 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-18T01:21:15.416909" 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-18T01:21:17.427105" 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-18T01:21:17.423935" elapsed="0.003265">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:21:19.434118" 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-18T01:21:19.430923" elapsed="0.003296">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:21:21.441327" 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-18T01:21:21.438041" elapsed="0.003408">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:21:23.448290" 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-18T01:21:23.445139" elapsed="0.003265">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:21:25.455337" 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-18T01:21:25.452164" 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-18T01:21:27.462554" 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-18T01:21:27.459358" 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-18T01:21:29.469514" 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-18T01:21:29.466319" elapsed="0.003307">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:21:31.476562" 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-18T01:21:31.473414" elapsed="0.003255">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:21:33.483517" 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-18T01:21:33.480340" elapsed="0.003287">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:21:35.490495" 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-18T01:21:35.487320" elapsed="0.003335">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:21:37.497442" 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-18T01:21:37.494264" 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-18T01:21:39.504682" 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-18T01:21:39.501490" 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-18T01:21:41.511950" 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-18T01:21:41.508698" 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-18T01:21:43.519589" 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-18T01:21:43.516289" elapsed="0.003410">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:21:45.526843" 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-18T01:21:45.523417" elapsed="0.003526">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:21:47.533779" 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-18T01:21:47.530642" 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-18T01:21:49.542020" 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-18T01:21:49.538855" elapsed="0.003254">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:21:51.549276" 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-18T01:21:51.546121" 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-18T01:21:53.557258" 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-18T01:21:53.554027" elapsed="0.003369">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:21:55.564222" 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-18T01:21:55.561073" 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-18T01:21:57.571333" 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-18T01:21:57.568166" 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-18T01:21:59.578416" 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-18T01:21:59.575194" elapsed="0.003329">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:22:01.585467" 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-18T01:22:01.582264" 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-18T01:22:03.592850" 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-18T01:22:03.589607" elapsed="0.003334">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:22:05.600800" 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-18T01:22:05.597552" elapsed="0.003345">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:22:07.607705" 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-18T01:22:07.604549" 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-18T01:22:09.614830" 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-18T01:22:09.611643" 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-18T01:22:11.621749" 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-18T01:22:11.618608" elapsed="0.003232">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:22:13.628781" 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-18T01:22:13.625541" elapsed="0.003335">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:22:15.636546" 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-18T01:22:15.633223" elapsed="0.003418">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:22:17.643602" 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-18T01:22:17.640453" elapsed="0.003242">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:22:19.650687" 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-18T01:22:19.647543" elapsed="0.003236">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:22:21.657699" 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-18T01:22:21.654539" elapsed="0.003253">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:22:23.664618" 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-18T01:22:23.661464" 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-18T01:22:25.672035" 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-18T01:22:25.668526" elapsed="0.003616">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:22:27.679416" 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-18T01:22:27.676167" elapsed="0.003341">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:22:29.686839" 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-18T01:22:29.683476" elapsed="0.003465">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:22:31.693994" 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-18T01:22:31.690828" elapsed="0.003259">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:22:33.701121" 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-18T01:22:33.697899" elapsed="0.003316">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:22:35.708251" 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-18T01:22:35.705088" 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-18T01:22:37.715363" 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-18T01:22:37.712094" elapsed="0.003388">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:22:39.722909" 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-18T01:22:39.719729" elapsed="0.003272">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:22:41.729926" 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-18T01:22:41.726764" elapsed="0.003251">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:22:43.737062" 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-18T01:22:43.733887" elapsed="0.003268">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:22:45.744082" 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-18T01:22:45.740893" 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-18T01:22:47.751186" 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-18T01:22:47.747890" elapsed="0.003408">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:22:49.758435" 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-18T01:22:49.755072" elapsed="0.003461">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:22:51.765856" 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-18T01:22:51.762710" elapsed="0.003238">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:22:53.772789" 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-18T01:22:53.769649" elapsed="0.003231">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:22:55.779801" 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-18T01:22:55.776615" elapsed="0.003277">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:22:57.787000" 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-18T01:22:57.783684" elapsed="0.003415">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:22:59.794402" 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-18T01:22:59.791066" elapsed="0.003437">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:23:01.801564" 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-18T01:23:01.798391" elapsed="0.003265">Variable '${flow_count_after_add}' not found.</status>
</kw>
<kw name="Check Flows Operational Datastore On Member" owner="ClusterOpenFlow">
<msg time="2026-10-18T01:23:03.808840" 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-18T01:23:03.805677" elapsed="0.003255">Variable '${flow_count_after_add}' not found.</status>
</kw>
<msg time="2026-10-18T01:23:03.809194" 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-18T01:16:22.351434" elapsed="401.458079">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-18T01:23:03.809964" elapsed="0.000049"/>
</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-18T01:23:03.810389" elapsed="0.000045"/>
</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-18T01:23:03.810794" elapsed="0.000041"/>
</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-18T01:23:03.811184" elapsed="0.000148"/>
</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-18T01:23:03.811701" elapsed="0.000041"/>
</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-18T01:23:03.812069" elapsed="0.000040"/>
</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-18T01:23:03.812538" elapsed="0.000042"/>
</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-18T01:23:03.812953" elapsed="0.000040"/>
</kw>
<doc>Check Flows in Operational Datastore</doc>
<status status="FAIL" start="2026-10-18T01:16:22.350980" elapsed="401.462447">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-18T01:23:03.821263" 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-18T01:23:03.818312" elapsed="0.003029">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-18T01:23:03.821767" elapsed="0.000045"/>
</kw>
<doc>Stop mininet and exit connection.</doc>
<status status="FAIL" start="2026-10-18T01:23:03.814117" elapsed="0.007954">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-18T01:23:03.824468" level="INFO">${config_datastore_delete_start_time} = 2026-10-18 01:23:03.824</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-18T01:23:03.823905" elapsed="0.000624"/>
</kw>
<kw name="Delete Bulk Flow In Node" owner="BulkomaticKeywords">
<msg time="2026-10-18T01:23:03.831024" 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-18T01:23:03.827916" elapsed="0.003183">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-18T01:23:03.831561" elapsed="0.000051"/>
</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-18T01:23:03.831989" elapsed="0.000042"/>
</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-18T01:23:03.832463" elapsed="0.000043"/>
</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-18T01:23:03.832840" elapsed="0.000041"/>
</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-18T01:23:03.833218" elapsed="0.000042"/>
</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-18T01:23:03.833612" elapsed="0.000041"/>
</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-18T01:23:03.834023" elapsed="0.000041"/>
</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-18T01:23:03.834480" elapsed="0.000043"/>
</kw>
<doc>100K Flows deleted via Follower Node2 and verify it gets applied in all instances.</doc>
<status status="FAIL" start="2026-10-18T01:23:03.822686" elapsed="0.012093">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-18T01:23:03.836844" 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-18T01:23:03.836202" elapsed="0.000766"/>
</kw>
<kw name="Append To File" owner="OperatingSystem">
<msg time="2026-10-18T01:23:03.840268" 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-18T01:23:03.837323" elapsed="0.003022">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-18T01:23:03.840712" elapsed="0.000044"/>
</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-18T01:23:03.841054" elapsed="0.000040"/>
</kw>
<doc>Log results for plotting.</doc>
<status status="FAIL" start="2026-10-18T01:23:03.835406" elapsed="0.005948">Variable '${config_datastore_write_rate}' not found.</status>
</test>
<kw name="Delete All Sessions" owner="RequestsLibrary" type="TEARDOWN">
<msg time="2026-10-18T01:23:03.842929" level="INFO">Deleting All Sessions</msg>
<doc>Removes all the session objects </doc>
<status status="PASS" start="2026-10-18T01:23:03.842763" elapsed="0.000443"/>
</kw>
<doc>Test suite for 3Node Cluster - 100K flows and 10 DPNs in Cluster Scale Up scenario</doc>
<status status="FAIL" start="2026-10-18T01:16:10.371970" elapsed="413.471307"/>
</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>
